首页 > 解决方案 > 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

我不知道我是否能够充分解释我的自我,但提前谢谢你

标签: rdataframe

解决方案


我们可以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))

推荐阅读