我有一个这样的数据框(除了有更多的行和大小):

   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

我可以通过重塑数据框,除以每个大小的总和,然后将其重塑回原始形状来做到这一点,但是有没有更优雅的方法来做到这一点?

最佳答案

您可以使用 aveprop.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/

10-12 17:45