为什么 merge() 聚合总和和最大值不同?

问题描述 投票:0回答:0

我正在尝试聚合数字变量,同时根据数字变量的最大值保留字符串变量。

dat<-data.frame(Group=rep(1:2, each=3), Score=c(1,2,3,4,3,1), Info=c("a","b","c","d","e","f"))
dat
  Group Score Info
1     1     1    a   
2     1     2    b   
3     1     3    c   
4     2     4    d   
5     2     3    e   
6     2     1    f 

我期望得到结果:

  Group Score Info
1     1     6    c
2     2     8    d

我试的是这个:

 maxs <- aggregate(Score ~ Group, data = dat, FUN = max) 
#sums <- aggregate(Score ~ Group, data = dat, FUN = sum) #???
 merge(maxs, dat)
  Group Score Info
1     1     3    c
2     2     4    d

效果很好,但是当我尝试时:

merge(sums, dat)

除了:

[1] Group Score Info 
<0 rows> (or 0-length row.names)

我似乎明白 maxs 只选择每组的一行,而 sums 会处理每组内的所有案例。我错过了代码什么?提前致谢!

merge sum max aggregation
© www.soinside.com 2019 - 2024. All rights reserved.