R删除所有以字符串开头的列均具有NA的行

时间:2019-09-04 17:11:31

标签: r dataframe na

我有以下DataFrame:

df <- data.frame(
  "DateValue" = c("2016-07-01", "2016-07-02", "2016-07-03", "2016-07-04", "2016-07-05", "2016-07-06","2016-07-07"),  
  "Age1" = c(rep(NA, 2), seq(14,18,2), NA, NA), 
  "Age2" = c(rep(NA, 2), seq(14,22,2)) 
)

我试图删除所有以字符串“ Age”开头的列中包含NA的所有行。但是,不要删除即使“ age”列中的一个也不缺少值的行。我的目标输出如下:

> df
    DateValue  Age1 Age2
  1 2016-07-03   14   14
  2 2016-07-04   16   16
  3 2016-07-05   18   18
  4 2016-07-06   NA   20
  5 2016-07-07   NA   22

我正在尝试使用以下R脚本来实现相同目的,但NA不会掉落:

df <- df[!(is.na(grep("^Age", names(df)))), ]

任何指导将不胜感激。

1 个答案:

答案 0 :(得分:2)

我们可以使用rowSums创建一个逻辑向量,并基于该向量对行进行子集

df[rowSums(!is.na(df[grep("^Age", names(df))])) > 0, ]