首页 > 解决方案 > R删除所有以字符串开头的列都有NA的行

问题描述

我有以下数据框:

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 的所有行。但是,不要删除即使“年龄”列之一具有非缺失值的行。我的目标输出如下:

> 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)))), ]

任何指导将不胜感激。

标签: rdataframena

解决方案


我们可以rowSums用来创建一个逻辑向量并根据它对行进行子集化

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

推荐阅读