我有以下DF:
names sex
adam M
jill F
stewart M
jordan M
alica F
jordan F
如何过滤行,这样我只得到这都是M和F的名称,在这种情况下,乔丹。
我们可以按“名”和filter
其元素大于1的unique
数“性”
library(dplyr)
df %>%
group_by(names) %>%
filter(n_distinct(sex) > 1)
或者还有一种方法是通过组的名字“和filter
同时具有“M”和“F”的团体
df %>%
group_by(names) %>%
filter(all(c("M", "F") %in% sex))
如果所有的数据是这样的,你可以简单地找到重复值的行:
dat[duplicated(dat$names),]
例:
> dat <- data.frame(names = c("adam", "jill", "stewart", "jordan", "alicia", "jordan"),
+ sex = c("M", "F", "M", "M", "F", F)
+ )
> dat
names sex
1 adam M
2 jill F
3 stewart M
4 jordan M
5 alicia F
6 jordan FALSE
> dat[duplicated(dat$names),]
names sex
6 jordan FALSE
或者,如果你想名字的载体:
> as.character(dat[duplicated(dat$names),]$names)
[1] "jordan"