다음을 원합니다. 나는 데이터 집합의 총 행 수의 나머지를 20으로 나눈 나머지 (0,1,2, ... 19)를 기반으로 x1, x2, x3 등의 값을 변수에 대입합니다. blf. 예를 들어, n 번째 행 & 20의 나머지가 0이면 blf = 0.8이고, n 번째 행의 나머지가 & 20이면 blf = 0.7이고, n 번째 행의 나머지와 20이 2 또는 3이면 blf = 0.6 등. 나는 R 에서 작업을 수행 할 때 (내 코드는 다음과 같습니다 및 샘플 데이터 세트는 여기에서 찾을 수 있습니다 (RDATA 및 CSV) 모두 : http://goo.gl/qgbeIJ는) 나는 다음과 같은 오류가 발생합니다 :행의 나머지 값을 기준으로 값을 지정하십시오.
Error in ifelse(sampledat[1:nrow(sampledat)%%20 == 0], 0.8, blf) : (list) object cannot be coerced to type 'logical'
sampledat$blf <- 0.1
sampledat$blf <- with(sampledat, ifelse(sampledat[1:nrow(sampledat)%%20==0],0.8,blf))
sampledat$blf <- with(sampledat, ifelse(sampledat[1:nrow(sampledat)%%20==1],0.7,blf))
sampledat$blf <- with(sampledat, ifelse(sampledat[1:nrow(sampledat)%%20==2] | sampledat[1:nrow(sampledat)%%20==3] ,0.6,blf))
한 가지 가능한 솔루션입니다 나머지 부분을 이라는 나머지 변수로 저장하고으로 남겨두고 벡터 값을 기반으로 ifelse 연산을 수행하지만 한 단계로 처리하는 방법이 있는지 궁금합니다.
sampledat$remain <- (1:nrow(sampledat))%%20
sampledat$blf <- 0.1
sampledat$blf <- with(sampledat, ifelse(remain==0,0.8,blf))
sampledat$blf <- with(sampledat, ifelse(remain==1,0.7,blf))
sampledat$blf <- with(sampledat, ifelse(remain==2 | remain==3 ,0.6,blf))
어떤 통찰력도 인정 될 것입니다.
TIA, Krishnan
적어도 'remaining'이 3을 초과하지 않으면'if-else'를 중첩하고 0 또는 1이 아닌 모든 경우를 최종 값에 지정하십시오. 'sampledat $ blf <- 0.6 + 0.1 * (sampledat $ remaining == 1) + 0.2 * (sampledat $ remaining == 0)' –
과 같이'with '가 필요하다고 생각하지 않습니다. 나머지는 3보다 큽니 까? –
동일한 프로세스가 19 시까 지 나머지를 기반으로 blf에 지정된 다른 값으로 계속되며 데이터 테이블의 모든 레코드에 대해 반복됩니다. 간결함을 위해 나머지 = 19에 대한 모든 방법을 포함하지 않았습니다. – Krishnan