r - 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)))), ]
任何指导将不胜感激。
解决方案
我们可以rowSums
用来创建一个逻辑向量并根据它对行进行子集化
df[rowSums(!is.na(df[grep("^Age", names(df))])) > 0, ]
推荐阅读
- c++ - 单击系统托盘通知时启动 UI 或应用程序
- javascript - 如何将翻译后的属性文件保存为从右到左?
- java - Quarkus 使用 OffsetDateTime 保存实体,没有偏移量/时区
- symfony - 在 Symfony 5.1 中使用默认参数在路由中保留斜杠
- python - 如何用正则表达式替换找到的数据?
- typescript - 是否可以强制类型转换?
- javascript - 显示一个 i 框架,使用 vanilla JavaScript 隐藏另一个
- javascript - 根据 React 中的类别选择更改博客列表
- python - 如何分组/收集变量并保持 IDE (PyCharm) 突出显示?
- c# - asp .NET core 中的错误:部分组件不起作用