我有一个数据框,我想从中提取val
中的值大于15且val
不是NA
的记录:
df[ !is.na(df$val) & df$val > 15, ]
由于我假设R中经常需要这样的比较,所以我想知道该比较是否可以简化。实际上,如果在StackOverflow上已经问过这个问题,我不会感到惊讶-但我无法提出找到它的搜索。
答案 0 :(得分:5)
subset
省略了NA值,还避免了重复df
:
subset(df, val > 15)
which
也消除了NA值,但必须重复df
:
df[which(df$val > 15), ]
dplyr软件包的filter
类似于基础subset
:
library(dplyr)
df %>% filter(val > 15)
使用sqldf
删除NA值。
library(sqldf)
sqldf("select * from df where val > 15")