2015-06-15 15 views
2

我有一個簡單的數據框,其中每行包含不同的NA數量(n)。我想在新的數據框中保留所有具有n個NA或> = n個NA的行。在數據框中保留具有定義數量的NA的行

現在,我首先總結了所有的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) 

從那裏,我rbinding dataframes爲NAS的目標金額,但我想一定有一個更聰明的方法來做到這一點。

回答

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

謝謝,那很容易。 – nouse

相關問題