java变量组_如何按组对变量求和

假设我有两列数据。 第一个包含诸如“第一”,“第二”,“第三”等类别。第二个具有代表我看到“第一”的次数的数字。

例如:

Category Frequency

First 10

First 15

First 5

Second 2

Third 14

Third 20

Second 3

我想按类别对数据进行排序并求和:

Category Frequency

First 30

Second 5

Third 34

我将如何在R中执行此操作?

#1楼

如果x是包含数据的数据框,则以下操作将满足您的要求:

require(reshape)

recast(x, Category ~ ., fun.aggregate=sum)

#2楼

library(plyr)

ddply(tbl, .(Category), summarise, sum = sum(Frequency))

#3楼

只是添加第三个选项:

require(doBy)

summaryBy(Frequency~Category, data=yourdataframe, FUN=sum)

编辑:这是一个非常古老的答案。 现在,我建议使用group_by并从dplyr summarise ,如@docendo答案中所示。

#4楼

使用aggregate :

aggregate(x$Frequency, by=list(Category=x$Category), FUN=sum)

Category x

1 First 30

2 Second 5

3 Third 34

在上面的示例中,可以在list指定多个尺寸。 可以通过cbind合并同一数据类型的多个聚合指标:

aggregate(cbind(x$Frequency, x$Metric2, x$Metric3) ...

(嵌入@thelatemail评论), aggregate也有一个公式界面

aggregate(Frequency ~ Category, x, sum)

或者,如果您想汇总多个列,则可以使用. 符号(也适用于一列)

aggregate(. ~ Category, x, sum)

或tapply :

tapply(x$Frequency, x$Category, FUN=sum)

First Second Third

30 5 34

使用此数据:

x

"Third", "Third", "Second")),

Frequency=c(10,15,5,2,14,20,3))

#5楼

您也可以只使用by()函数:

x2

do.call(rbind,as.list(x2))

那些其他软件包(plyr,reshape)具有返回data.frame的好处,但是值得一提的是by(),因为它是基本函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值