根据 R 中多列的值过滤行

Filter rows based on values of multiple columns in R

这里是数据集,假设名字是DS。

       Abc    Def   Ghi
1      41     190   67
2      36     118   72
3      12     149   74
4      18     313   62
5      NA      NA   56
6      28      NA   66
7      23     299   65
8      19      99   59
9       8      19   61
10     NA     194   69

如何获取新的数据集 DSS,其中 Abc 列的值大于 25,并且 Def 列的值大于 100.It 如果 NA 中至少一列的值,也应该忽略任何行。

我尝试了几个选项但没有成功。感谢您的帮助。

有多种方法可以做到这一点。我给了5个方法,前4个方法比子集函数快

R代码:

# Method 1:
DS_Filtered <- na.omit(DS[(DS$Abc > 20 & DS$Def > 100), ]) 
# Method 2: which function also ignores NA
DS_Filtered <- DS[ which( DS$Abc > 20 & DS$Def > 100) , ]
# Method 3:
DS_Filtered <- na.omit(DS[(DS$Abc > 20) & (DS$Def >100), ])

# Method 4: using dplyr package
DS_Filtered <- filter(DS, DS$Abc > 20, DS$Def >100)
DS_Filtered <- DS %>% filter(DS$Abc > 20 & DS$Def >100)

# Method 5: Subset function by default ignores NA
DS_Filtered <- subset(DS, DS$Abc >20 & DS$Def > 100)