选择数据帧中的行,其键频率大于阈值

时间:2014-04-12 05:25:44

标签: r dataframe

我有一个数据框A,第一列作为第一列作为数字键。一个例子就是这样的

key     feature_1       feature_2
101      1.1              1.2
102      1.3              1.2
101      1.2              1.3
.............................

现在我想为每个不同的键选择第一列值(键)出现超过5次的行,对于大尺寸A应该有效的命令是什么?

我认为它应该是这样的

subset(A, key %in% c(.... # please fill in here) ) ?

1 个答案:

答案 0 :(得分:2)

这里有三个选项需要考虑,有一些样本数据可以测试它的效率。将阈值(这里我使用过" 6")更改为您真正想要的任何内容。

## Sample data
set.seed(1)
mydf <- data.frame(key = sample(10, 100, TRUE),
                   feature1 = runif(100), feature2 = runif(100))

基地R:ave

Len <- with(mydf, ave(key, key, FUN = length))
mydf[Len > 6, ]

data.table:.N

library(data.table)
DT <- data.table(mydf)
DT[, Len := .N, by = key]
DT[Len > 6]

dplyr:n()

library(dplyr)
mydf %.%
  group_by(key) %.%
  mutate(Len = n()) %.%
  filter(Len > 6)