【发布时间】:2022-01-18 09:13:56
【问题描述】:
在 R 中,我试图过滤数据帧中许多列不相等的行。
示例:(我的实际数据框有更多列)
data.frame(id = c(1, 2, 3, 4, 5), xx = c("no", "no", "yes", "yes", "no"), x1 = c("m", "f", "f", "f", "m"), x2 = c("m", "f", "f", "m", "m"), x3 = c("m", "u", "f", "m", NA), x4 = c("m", "f", "m", "m", "f"), x5 = c(NA, "f", "m", "u", "f"))
id xx x1 x2 x3 x4 x5
1 1 no m m m m <NA>
2 2 no f f u f f
3 3 yes f f f m m
4 4 yes f m m m u
5 5 no m m <NA> f f
#what I want
id xx x1 x2 x3 x4 x5
3 yes f f f m m
4 yes f m m m u
5 no m m <NA> f f
我想比较 x1:x5(不是 id 或 xx)。如果所有列都相等(NA 值不计算在内),则过滤掉该行(示例中的第 1 行)。如果所有列都相等,但组合是 m 和 u 或 f 和 u,则也过滤掉这些行(示例中的第 2 行)。我只想以任意组合保留同时存在 m 和 f 的行。我更喜欢 tidyverse 解决方案,但任何方法都可以。
谢谢!
【问题讨论】:
-
需要更广泛的示例。不清楚“m 和 f 在一起”是什么意思。
-
很抱歉。我编辑了这个问题。如果还不清楚,请告诉我。
-
f和m和u是否可用? -
所以要明确,必须至少有一个“m”和一个“f”,而且你真的不在乎有多少个“u”或 NA?
-
如果 f 和 m 和 u 在一起,我希望保留该行(如示例中的第 4 行)。是的,我不在乎你和NA。