我们说我有以下数据框。第一列是INPUT,其值为4000,4000,3000,2000,2000,2000,2000等。第二列是具有值的组,例如-1,1,2,3,3,3,3 。 分组已基于INPUT完成。 例如:INPUT IS: -
INPUT group
4000 1
4000 1
2000 2
3000 3
2000 4
2000 4
2000 4
输出: - 返回具有最大重复组值的整个data.frame。
INPUT group
2000 4
2000 4
2000 4
我的数据框有10,0000条记录和70条属性。
答案 0 :(得分:2)
我们可以使用data.table
。我们转换了' data.frame'到' data.table' (setDT(df1)
,按照'组'将nrow分组,并在' N'中使用max
值对行进行分组。
library(data.table)
setDT(df1)[, N:= .N, group][N==max(N)][, N:= NULL]
# INPUT group
#1: 2000 4
#2: 2000 4
#3: 2000 4
答案 1 :(得分:2)
您可以尝试使用table
功能,然后使用which.max
找到最大重复值
df[df$group == which.max(table(df$group)), ]
# INPUT group
#5 2000 4
#6 2000 4
#7 2000 4
根据@ David使用tabulate
代替table
的评论,这将是有用的,因为它是一个大型数据集
df[df$group == which.max(tabulate(df$group)), ]
刚刚对此数据集本身进行了一次小比较
library(microbenchmark)
microbenchmark(
tabulate = df[df$group == which.max(tabulate(df$group)), ],
table = df[df$group == which.max(table(df$group)), ]
)
# Unit: microseconds
# expr min lq mean median uq max neval
# tabulate 46.871 51.1475 56.94295 53.714 62.4375 92.715 100
# table 184.747 192.4440 211.37036 203.905 216.3925 455.023 100
答案 2 :(得分:1)
你也可以使用基地R. 首先计算由INPUT变量分层的每个组变量的计数
d$count <- ave(d$INPUT, d$group, FUN = length)
返回具有最大重复组值的数据。
d[ d$count == max(d$count), ]