Ore*_*hes 8 indexing r subset dataframe na
背景 在运行逐步模型选择之前,我需要删除任何模型术语的缺失值.因为我的模型中有相当多的术语,所以我需要查看相当多的向量来获取NA值(并删除任何这些向量中具有NA值的行).但是,也有一些包含NA值的向量,我不想将其用作删除行的术语/条件.
问题 如何从数据框中删除包含任何矢量列表的NA值的行?我目前正在使用一长串!is.na的笨重方法
> my.df[!is.na(my.df$termA)&!is.na(my.df$termB)&!is.na(my.df$termD),]
但我确信有一种更优雅的方法.
Sve*_*ein 12
让我们dat为数据帧和cols列名或感兴趣的列数的向量.然后你可以使用
dat[!rowSums(is.na(dat[cols])), ]
排除至少有一个的所有行NA.
编辑:我完全掩饰了subset内置函数,用于子设置:
my.df <- subset(my.df, 
  !(is.na(termA) |
    is.na(termB) |
    is.na(termC) )
  )
我倾向于使用这样with()的东西.不要使用attach,你一定会削减自己.
my.df <- my.df[with(my.df, {
  !(is.na(termA) |
    is.na(termB) |
    is.na(termC) )
}), ]
但是如果你经常这样做,你可能也想要一个辅助函数, is_any()
is_any <- function(x){
  !is.na(x)
}
如果你最终做了很多这样的事情,那么使用SQL通常会与数据子集进行更好的交互.dplyr也可能证明是有用的.
| 归档时间: | 
 | 
| 查看次数: | 34669 次 | 
| 最近记录: |