r - 为完整案例设置阈值以从 R 中的多个列中删除 NA
问题描述
对此可能有一个简单的答案,但我无法使其发挥作用。我有一个如下所示的数据表:
df <- data.table(t = c(1, 2, 3), a = c(NA, NA, 4), b = c(NA, 4, NA), c = c(NA, 4, NA))
如何仅删除除“t”之外的所有列都具有 NA 的行。由于我的数据文件很大,所以它应该很快,所以我特别想用 complete.cases 来做。我还没有找到解决这个问题的方法。
结果应该是这样的
dfRes <- data.table(t = c(2, 3), a = c(NA, 4), b = c(4, NA), c = c(4, NA))
解决方案
我们可以rowSums
在除 之外的列上使用"t"
。
library(data.table)
cols <- which(names(df) != 't')
df[rowSums(!is.na(df[, ..cols])) > 0, ]
# t a b c
#1: 2 NA 4 4
#2: 3 4 NA NA
推荐阅读
- .net - 如何在 Blazor Hosted 中使用 dotnet watch?
- awk - 使用 Awk/Sed 命令比较和替换内联
- c++ - 返回没有内存泄漏
- flutter - 在类中使用另一个提供程序,它在颤动中扩展了 ChangeNotifier
- java - 在后台进程中使用java运行node js文件
- python - 为什么在以下使用排序时会出现不同的结果
- python - 从 Poppler 导入版本时 DLL 加载失败
- c++ - 是否有充分的理由在新代码中使用“extern”链接说明符?
- javascript - 尝试使用节点 js 更新 mongodb 中的单个条目
- sharepoint - 如何在 Hub 站点 Sharepoint Online 的西装栏导航中更改站点名称