查找属于另一个向量的因子的不同级别的向量的公共值

时间:2019-01-26 05:22:28

标签: r dataframe

请考虑以下data.frame

set.seed(1);x <- sample( LETTERS[1:2], 5, replace=TRUE)
y <- c(2,1,1,3,4)
df <- data.frame(x,y)

df看起来像这样:

x y
A 2
A 1
B 1
B 3
A 4

我想在df$y中使用因值df$x具有不同字母(级别)的公用值。在这个虚拟数据集中,答案将是第2行和第3行。能否请某人提供给我代码以应用于更大的数据集情况?

2 个答案:

答案 0 :(得分:1)

您可以将y的出现次数添加到df,然后对大于1的次数进行过滤并提取unique记录:

df %>% left_join(
  df %>% count(
    y
  ),
  by = 'y'
) %>% filter(
  n > 1
) %>% select(
  -n
) %>% unique()

这产生

  x y
1 A 1
2 B 1

答案 1 :(得分:1)

尝试一下:

library(data.table)
library(dplyr)

df %>%
  group_by(y) %>%
  filter(uniqueN(x) > 1)