以下代码有效。...
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
的和) )?我确实在寻找答案,但是我是个新手,我可能错过了一个明显的答案……。
答案 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