我有以下data.frame
:ifelse基於以下幾個條件
a <- c(26, 26, 156, 801, 143, 4, 455, 446, 447, 241, 461, 343, 359, 409, 241)
b <- c(26, 26, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
c <- c(NA, NA, NA, NA, NA, 4, NA, NA, NA, NA, NA, NA, NA, NA, NA)
d <- c(NA, NA, NA, NA, NA, NA, NA, 446, 447, NA, 461, NA, NA, NA, NA)
test <- data.frame(a,b,c,d)
我希望得到基於在test$b
,test$c
和test$d
值的下一個矢量e
。我還是習慣在Excel中,如果命令,所以我想這:
test$e <- ifelse(is.na(b)==TRUE, ifelse(is.na(c)==TRUE, ifelse(is.na(d)==TRUE)), test$a, NA)
和
test$e <- ifelse(is.na(b)==TRUE && is.na(c)==TRUE && is.na(d)==TRUE, test$a, NA)
顯然沒有奏效。我敢肯定,這可能不會太困難,test
看起來應該是這樣算賬:
a b c d e
1 26 26 NA NA NA
2 26 26 NA NA NA
3 156 NA NA NA 156
4 801 NA NA NA 801
5 143 NA NA NA 143
6 4 NA 4 NA NA
7 455 NA NA NA 455
8 446 NA NA 446 NA
9 447 NA NA 447 NA
10 241 NA NA NA 241
11 461 NA NA 461 NA
12 343 NA NA NA 343
13 359 NA NA NA 359
14 409 NA NA NA 409
15 241 NA NA NA 241
什麼是ifelse
做到這一點的正確方法以及是否有其他(也許更簡單)的方式? 謝謝!
這工作完美,謝謝。 – Thomas
嗯..該方法給了我所有的新手,奇怪的... –
請注意,你不需要== TRUE部分,因爲is.na已經返回一個邏輯值。 – Dason