我有一个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
非常感谢你的时间。
答案 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)