r - R studio:仅使用特定变量,但能够继续工作而不会丢失其他变量信息
问题描述
大家好,我需要一点帮助来解决我面临的问题,我敢肯定这很简单,但我似乎无法自己解决。基本上这是我的数据集:
Age Gender Group V1 V2 V3 V4 V5
20 1 1 2 1 4
21 2 1 2 2 1
35 2 2 2 1
22 2 1 2
我看到许多人建议使用子集/选择函数来执行特定变量的分析,但我需要从 v1 到 v5 来了解要删除多少行导致丢失数据的原因,但不会丢失年龄、性别和组信息。所以我基本上需要告诉 r 删除从 v1 到 v5 有超过 3 个缺失数据的所有行(我知道该怎么做),并给我一个包含剩余数据的所有信息的数据框(这就是我我失踪了)。像这样的东西:
Age Gender Group V1 V2 V3 V4 V5
20 1 1 2 1 4
21 2 1 2 2 1
我不知道我是否能够充分解释我的自我,但提前谢谢你
解决方案
我们可以rowSums
在选定的列上使用。(以“V”和数字开头的列)。
cols <- grep('^V\\d+', names(df))
如果您将NA
值作为缺失数据
df[rowSums(is.na(df[cols])) < 3, ]
# Age Gender Group V1 V2 V3 V4 V5
#1 20 1 1 NA 2 1 NA 4
#2 21 2 1 2 NA 2 NA 1
如果空单元格作为缺失数据。
df[rowSums(df[cols] == '') < 3, ]
逐行的另一种选择apply
df[apply(is.na(df[cols]), 1, sum) < 3, ]
数据
df <- structure(list(Age = c(20L, 21L, 35L, 22L), Gender = c(1L, 2L,
2L, NA), Group = c(1L, 1L, 2L, 2L), V1 = c(NA, 2L, 2L, 1L), V2 = c(2L,
NA, NA, NA), V3 = c(1L, 2L, NA, NA), V4 = c(NA, NA, 1L, 2L),
V5 = c(4L, 1L, NA, NA)), class = "data.frame", row.names = c(NA, -4L))
推荐阅读
- c# - 深度嵌套的子类对象的 XML 序列化
- r - 如何使用 R 中的 Seqinr 将范围和特定索引与 Fasta 序列结合起来
- c++ - 将 Boost、Threads、OpenSSL 和 Curl 库组合成一个静态库
- c - 如何在 C 中跨多个线程重新分配?
- java - 在 Windows 中使用 Gradle 构建时 Vaadin 8 Framework 应用程序中的编码问题
- ruby-on-rails - 在 Rails 模型的前置过滤器上添加“全有或全无回滚”
- python - Holoviews“点”与 Datashader 一起使用,但“曲线”抛出错误
- azure-devops - Azure DevOps Pipeline 永远停留在 Pending
- spring-boot - Mybatis 和 Spring 数据与 hibernate 一起使用
- oracle - SP2-0310:无法在 Docker for Windows 容器中从 Oracle DB 18c 打开文件“LOGIN.SQL”