我有以下df:
names sex
adam M
jill F
stewart M
jordan M
alica F
jordan F
如何过滤行,以便仅获得名称为M和F的名称,在本例中为jordan。
答案 0 :(得分:1)
我们可以按'名称'和filter
分组,其中unique
元素数大于1的'性别'
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))
答案 1 :(得分:0)
如果您的所有数据都是这样,则只需查找具有重复值的行:
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"