在数据帧中保留具有定义数量的NA的行

时间:2015-06-15 18:39:39

标签: r

我有一个简单的数据帧,其中每行包含不同数量(n)的NA。我想在新的数据帧中保留所有行n nAs或> = n NAs。

现在,我首先总结了所有NAs,然后拆分数据帧:

df <- structure(list(`2015` = c(33L, 61L, 31L, 35L, 24L, 38L), `2014` = c(39L, 
NA, NA, 33L, 55L, 34L), `2013` = c(NA, NA, NA, 32L, NA, NA), 
    `2012` = c(NA, NA, NA, 40L, NA, NA), `2011` = c(NA, NA, NA, 
    40L, NA, NA), `2010` = c(NA, NA, NA, 33L, NA, NA), `2009` = c(NA_integer_, 
    NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_
    )), .Names = c("2015", "2014", "2013", "2012", "2011", "2010", 
"2009"), row.names = c(NA, 6L), class = "data.frame")

df$NAsum <- apply(df, 1, function(x) sum(!is.na(x)))
list2env(split(df, df$NAsum),envir = .GlobalEnv) 

从那里开始,我正在使用目标数量的NA来处理数据帧,但我想必须有一种更聪明的方法来实现它。

1 个答案:

答案 0 :(得分:2)

n <- 3  # number of NAs
newDf <- df[rowSums(is.na(df)) >= n, ]