我有一个简单的数据帧,其中每行包含不同数量(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来处理数据帧,但我想必须有一种更聪明的方法来实现它。
答案 0 :(得分:2)
n <- 3 # number of NAs
newDf <- df[rowSums(is.na(df)) >= n, ]