根据R中多列的值过滤行

时间:2015-01-15 11:50:27

标签: 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.如果NA中至少有一列的值,也应该忽略任何行。

我尝试过很少的选择但是没有成功。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

有多种方法可以做到这一点。我已经给出了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) 
相关问题