【发布时间】:2021-03-16 17:30:34
【问题描述】:
小标题:
df <- tibble(x = c(1, 3, 2, 5, 3, 7, 1, 9),
y = c(rep("condition_one", 5), rep("condition_two", 3)))
目标:
我想在x 和condition_one 中返回y 中的“非唯一”值行。在此示例中,它将是第 2 行和第 5 行,因为值 3 在x 中不是唯一的,而y 是condition_one。
我首先尝试的是使用 base R 中的 duplicated() 函数:
df %>%
filter(duplicated(.$x) & y == "condition_one")
输出:
# A tibble: 1 x 2
x y
<dbl> <chr>
1 3 condition_one
虽然它只返回重复的行而不是“原始”行。 在这种情况下,我还可以包含在 dplyr 管道链中的解决方案是什么?
编辑:
我看到一些答案仍然不能解决我的问题,我认为这是因为我的问题表述得很糟糕:
在我的过滤输出中,我只想要 x 中的值不唯一的行。但我希望 R 返回所有非唯一行,而不仅仅是第一次出现重复值的行(duplicate() 正在发生这种情况)。
最重要的是,我想要y == "condition_one"
【问题讨论】:
-
你可以做
df %>% group_by(x, y) %>% filter(n() != 1)。