使用列中的重复值过滤R DataFrame

时间:2015-05-28 14:48:05

标签: r

我有一个R DataFrame,我想从这个中创建另一个DF,但只能使用在确定列中出现超过X次的值。

    >DataFrame
     Value Column
     1     a
     4     a
     2     b
     6     c
     3     c
     4     c
     9     a
     1     d

例如,想要一个新的DataFrame,只有Column中的值出现2次以上,才能得到这样的结果:

    >NewDataFrame
     Value Column
     1     a
     4     a
     6     c
     3     c
     4     c
     9     a

非常感谢你的时间。

1 个答案:

答案 0 :(得分:2)

我们可以使用table来获取“列”中的值计数,并根据“tbl”中计数大于'n的名称,使用subset数据集('df1') “

n <- 2
tbl <- table(DataFrame$Column) > n
NewDataFrame <- subset(DataFrame, Column %in% names(tbl)[tbl])
#    Value Column
#1     1      a
#2     4      a
#4     6      c
#5     3      c
#6     4      c
#7     9      a

或使用ave

中的base R
NewDataFrame <- DataFrame[with(DataFrame, ave(Column, Column, FUN=length)>n),]

或使用data.table

library(data.table)
NewDataFrame <- setDT(DataFrame)[, .SD[.N>n] , by = Column]

或者

NewDataFrame <- setDT(DataFrame)[, if(.N > n) .SD, by = Column]

dplyr

NewDataFrame <- DataFrame %>%
                      group_by(Column) %>%
                      filter(n()>2)