我有一个数据集如下:
Group Class
A 1
A 2
A 1
A 1
B 2
B 2
B 2
B 1
B 3
B 1
C 1
C 1
C 1
C 2
C 3
我想通过'Group'列聚合表,'Class'列上的值将是具有最大计数的Class。例如,对于组A,1出现三次,因此Class的值为1.类似地,对于组2,2出现三次,因此Class的值为2.结果表应如下所示:
Group Class
A 1
B 2
C 1
我是R编程的新手,非常感谢您帮助我解决这个问题。谢谢!
答案 0 :(得分:0)
您也可以在不使用<div class="background-image"></div>
<div class="content"> Your text </div>
的情况下执行此操作,因此请改用aggregate
和table
:
max.col
这似乎更快:
tb <- table(df$Group, df$Class)
data.frame("Group"=rownames(tb), "CLass"=max.col(tb))
# Group CLass
#1 A 1
#2 B 2
#3 C 1
library(microbenchmark)
# by Ronak Shah in comments
f1 <- function(df) aggregate(Class~Group, df, function(x) which.max(table(x)))
# this answer
f2 <- function(df) {tb <- table(df$Group, df$Class);
data.frame("Group"=rownames(tb), "CLass"=max.col(tb));}
all(f1(df)==f2(df))
# [1] TRUE
microbenchmark(f1(df), f2(df))
# Unit: microseconds
# expr min lq mean median uq max neval
# f1(df) 800.153 838.9130 923.6484 870.0115 918.988 1981.901 100
# f2(df) 298.367 319.0995 353.4915 338.6305 380.246 599.439 100