r - 如何删除R中的特定行?
问题描述
我正在使用的数据集如下:
C1 C2 C3 R1
R1 NA NA NA 5
R2 NA NA 0.4 7
R3 0.1 NA 6
R4 NA NA NA 2
从数据框中,我想删除包含从 C1 到 C3 大于零的数字的行。
最终结果必须是:
C1 C2 C3 R1
R1 NA NA NA 5
R4 NA NA NA 2
我试过:
df<- df %>% filter_at(vars('C1' : 'C2`), all_vars(. > 0))
但我对此有误。我该如何解决?
解决方案
您可以rowSums
在基础 R 中使用:
cols <- paste0('C', 1:3)
df[rowSums(df[cols] > 0, na.rm = TRUE) == 0, ]
或使用filter_at
:
library(dplyr)
df %>% filter_at(vars(C1:C3), all_vars(. <= 0 | is.na(.)))
# C1 C2 C3 R1
#R1 NA NA NA 5
#R4 NA NA NA 2
并且filter_at
已被弃用,因此您可以将其编写across
为:
df %>% filter(across(C1:C3, ~. <= 0 | is.na(.)))
数据
df <- structure(list(C1 = c(NA, NA, 0.1, NA), C2 = c(NA, NA, NA, NA
), C3 = c(NA, 0.4, NA, NA), R1 = c(5L, 7L, 6L, 2L)),
class = "data.frame", row.names = c("R1", "R2", "R3", "R4"))
推荐阅读
- flutter - 更改 API 数据
- wordpress - 问一些关于互联网服务器错误的事情?
- node.js - 为什么我在使用 NPM 链接时会收到此错误
- reactjs - 无法在 ReactJS 中关闭汉堡菜单
- vue.js - 如果视图中有很多,如何触发选择的更改事件?(vue 和 v-select)
- javascript - 获取下一周的星期一日期
- java - 如何通过 Java 使用 WinRM 启动 Java 进程?
- python - Python 重试除异常列表之外的所有异常
- react-native - 我们可以在具有 MANAGE_EXTERNAL_STORAGE 权限的本机应用程序中使用 rn-fetch-blob 来将 Android API 21 上的应用程序定位到 API 30
- r - 使用与从 tmap 获得的相同的 ggmap 重新创建 OSM 映射