【发布时间】:2021-10-30 15:14:00
【问题描述】:
我正在尝试从下面的df 中删除一些无用的行。每个 ID 可以有一个 type (1:5) 和 yes_no 变量,以查看是否记录了变量。如您所见,我想删除第 3 行和第 5 行,因为它们的其他行具有相同的 ID 和 type,记录值为 yes_no = y。
df <- data.frame(ID = c("1", "1", "1", "1", "1", "1", "1", "1"), type = c("1", "2", "3", "3", "4", "4", "4", "5"), yes_no = c("n", "n", "n", "y", "n", "y", "y", "n"), value = c(NA, NA, NA, "2", NA, "5", "6", NA))
ID type yes_no value
1 1 n <NA>
1 2 n <NA>
1 3 n <NA>
1 3 y 2
1 4 n <NA>
1 4 y 5
1 4 y 6
1 5 n <NA>
想要的输出如下:
df2 <- data.frame(ID = c("1", "1", "1", "1", "1", "1"), type = c("1", "2", "3", "4", "4", "5"), yes_no = c("n", "n", "y", "y", "y", "n"), value = c(NA, NA, "2", "5", "6", NA))
ID type yes_no value
1 1 n <NA>
1 2 n <NA>
1 3 y 2
1 4 y 5
1 4 y 6
1 5 n <NA>
除了 1 之外,还有其他 ID 的类型为 1:5,所以看起来我必须 group_by(ID)。 dplyr 解决方案也很棒。
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: r dataframe dplyr filtering subset