R 根据二进制文件删除行&;NA状态
假设数据集DF中有三列:A、B和C A是二进制的,而B和C是序数的 有时B和C是NA,有时在同一行,有时不是 现在,我想要的是在A=0的条件下删除B或C为NA的行。如果A=1,那么B或C是否为NA并不重要 最简单/最直接的方法是什么R 根据二进制文件删除行&;NA状态,r,if-statement,na,R,If Statement,Na,假设数据集DF中有三列:A、B和C A是二进制的,而B和C是序数的 有时B和C是NA,有时在同一行,有时不是 现在,我想要的是在A=0的条件下删除B或C为NA的行。如果A=1,那么B或C是否为NA并不重要 最简单/最直接的方法是什么 我尝试了if-else,但是因为B和C有NA值,我得到了警告,它不是真/假。一个简单的基R解决方案是 DF[DF$A == 1 | (DF$A != 1 & !is.na(DF$B)) | (DF$A != 1 & !is.na(DF$C)), ]
我尝试了if-else,但是因为B和C有NA值,我得到了警告,它不是真/假。一个简单的基R解决方案是
DF[DF$A == 1 | (DF$A != 1 & !is.na(DF$B)) | (DF$A != 1 & !is.na(DF$C)), ]
或
下面是一个使用
tidyverse
的示例,特别是dplyr::filter
。构造正确的条件集很容易,我们希望在A==1或两者都的位置保留行!is.na(B)
和!is.na(C)
。我还通过A
排列,这样您就可以看到NA
行中A==0
库(tidyverse)
种子集(100)
待定%
过滤器((A==1)|(!is.na(B)&is.na(C))%>%
安排(A)
#>A、B、C
#> 1 0 2 3
#> 2 0 2 4
#> 3 0 1 4
#> 4 0 1 3
#> 5 0 2 3
#> 6 0 1 3
#> 7 0 2 3
#>812NA
#>9.1纳纳纳
#> 10 1 2 3
#> 11 1 2 3
#>12 1 NA 3
#>13 1 NA 4
#>14 1 NA 3
#> 15 1 1 3
由(v0.2.0)于2018年5月10日创建。如果您给出一个显示典型输入和所需输出的示例,则会更容易。谢谢,但我收到警告:没有适用于“函数”类对象的“过滤器”方法。这是一个可复制的示例。尝试精确复制和粘贴,并在干净的R会话中运行。
DF[ifelse(DF$A == 0, !is.na(DF$B) & !is.na(DF$C), TRUE), ]