R:在三列上添加带条件检查的列?

use*_*718 0 r conditional-statements

我的df1如下:

df1 <- data.frame(A=c("a","b","c","d","e"), B=c("f","g","t","g","u"), C=c("M","NA","NA","NA","M"), D=c("A","NA","NA","NA","NA"), E=c("NA","NA","NA","NA","G"), G=c(1:5))

  A B  C  D  E G
1 a f  M  A NA 1
2 b g NA NA NA 2
3 c t NA NA NA 3
4 d g NA NA NA 4
5 e u  M NA  G 5
Run Code Online (Sandbox Code Playgroud)

我想根据C,D和E列中的读数添加列.如果所有都是NA,我想将X添加到H列.如果其中任何一个都不是NA,我想在列H中添加YES.结果如下:

  A B  C  D  E G H
1 a f  M  A NA 1 YES
2 b g NA NA NA 2 X
3 c t NA NA NA 3 X
4 d g NA NA NA 4 X
5 e u  M NA  G 5 YES
Run Code Online (Sandbox Code Playgroud)

专家能教我如何用R有效地做到吗?

Dan*_*son 5

transform(df1, H = ifelse(is.na(C) & is.na(D) & is.na(E), "X", "YES"))
Run Code Online (Sandbox Code Playgroud)

请注意,这仅在NAs实际编码为NA而不是字符串时才有效"NA".

请参阅?transform?ifelse了解这些功能的说明.单个&运算符逐项配对向量操作数,并对每对执行布尔运算,返回逻辑向量.