我有一个这样的数据框(除了有更多的行和大小):
size amount
1 big 1
2 big 9
3 small 3
4 small 1
我想得到一个这样的数据框,其中 amountPct 是数量除以相同大小的数量之和。
size amountPct
1 big 0.10
2 big 0.90
3 small 0.75
4 small 0.25
我可以通过重塑数据框,除以每个大小的总和,然后将其重塑回原始形状来做到这一点,但是有没有更优雅的方法来做到这一点?
最佳答案
您可以使用 ave
和 prop.table
。
> transform(dat, amountPct = ave(amount, size, FUN = prop.table))
size amount amountPct
1 big 1 0.10
2 big 9 0.90
3 small 3 0.75
4 small 1 0.25
其中
dat
是数据框的名称。关于r - 类别内的百分比,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21195651/