根据列的聚合计数值筛选数据框

时间:2017-10-26 05:42:02

标签: r dplyr

考虑如下数据框:

Key | Value
A   | 1
A   | 2
B   | 2
C   | 3

我想基于以下条件过滤此数据帧:只有密钥出现的行才能获得多次。

所以预期的输出是

Key | Value
A   | 1
A   | 2

在R中最简洁的方法是什么?寻找一种通用的解决方案,其中计数可以是> Ñ

2 个答案:

答案 0 :(得分:2)

我们可以使用

library(dplyr)
df1 %>%
    group_by(Key) %>%
    filter(n()>1)

base R使用tablesubset

subset(df1, Key %in% names(which(table(Key) > 1)))

答案 1 :(得分:1)

使用data.table

df <- data.table(read.table(text = "Key  Value
A   1
A   2
B   2
C   3", header = T))

df[, if(.N > 1) .SD, by = Key ]

   Key Value
1:   A     1
2:   A     2