在R中按组汇总结果

时间:2020-10-13 21:06:56

标签: r sum

以下代码有效。...

sum(  (WASDATj$HCNT == 1 | WASDATj$HCNT == -1 |  WASDATj$HCNT == 0  ) & WASDATj$Region=='United States' 
    & WASDATj$Unit=='Million Bushels' 
    & WASDATj$Commodity=='Soybeans'
    &  WASDATj$Attribute == 'Production' 
    &  WASDATj$Fdex.x == 10
    ,na.rm=TRUE  
    )

它计算HCNT取值为-1,1,0的观察次数 它为此类别提供一个数字。 变量WASDATj$Fdex.x的取值范围是1-20。

我该如何概括这一点,以对-1,1,0的每个值取一个值Fdex.x的观察次数进行计数(因此请从1到20为我提供20个Fdex.x的和) )?我确实在寻找答案,但是我是个新手,我可能错过了一个明显的答案……。

1 个答案:

答案 0 :(得分:0)

使用sum将布尔向量的aggregate简单地扩展到length函数,这实际上是一个计数聚合,类似于sum的{​​{1}}:

TRUE

对于每个不同的agg_df <- aggregate(cbind(Count=HCNT) ~ Fdex.x, data=WASDATj[WASDATj$HCNT %in% c(1,-1, 0) & WASDATj$Region=='United States' & WASDATj$Unit=='Million Bushels' & WASDATj$Commodity=='Soybeans' & WASDATj$Attribute=='Production', ], FUN=length) 值和对应的计数,结果应为20行乘2列的数据帧。

如果需要,您可以通过调整公式和数据过滤器将分组扩展到其他计数:

Fdex.x