R 将data.table中的分组和除以,一步获得速率
我有一个data.table,看起来像这样:R 将data.table中的分组和除以,一步获得速率,r,data.table,R,Data.table,我有一个data.table,看起来像这样: Fruit Date Count Apple 8/29/16 20548 Orange 8/29/16 14744 Banana 8/29/16 10605 Strawberry 8/29/16 8341 Watermelon 8/29/16 7768 Apple 8/30/16 9819 Orange 8/30/16 5858 Banana 8/30/16 362
Fruit Date Count
Apple 8/29/16 20548
Orange 8/29/16 14744
Banana 8/29/16 10605
Strawberry 8/29/16 8341
Watermelon 8/29/16 7768
Apple 8/30/16 9819
Orange 8/30/16 5858
Banana 8/30/16 3624
Strawberry 8/30/16 2595
Watermelon 8/30/16 2291
Apple 8/31/16 6662
Orange 8/31/16 6563
Banana 8/31/16 2073
Strawberry 8/31/16 1827
Watermelon 8/31/16 1738
如何通过水果和日期获得计数的总和,然后将总和除以,一步生成一个比率,例如香蕉/苹果?得到总数很容易注意:我也在过滤水果,一次只取两个:
d.table[Fruit %in% c('Apple', 'Banana'), .(Sum = sum(Count)), .(Fruit, Date)]
但我总是一步到位:
Date Rate
8/29/16 0.52
8/30/16 0.37
8/31/16 0.31
我应该注意的是,我的实际data.table有额外的列,仅用于筛选,如果可能的话,我不想重塑我的数据/使用另一个包,因为此操作的结果将在筛选多个/更改条件后绘制,因此我希望使用易于重用的东西,即一行
提前感谢。这应该可以:
d.table[Fruit %in% c('Apple', 'Banana'),
.(Rate = sum(Count[Fruit == 'Banana']) / sum(Count[Fruit == 'Apple'])),
.(Date)]
# Date Rate
# 1: 8/29/16 0.5161086
# 2: 8/30/16 0.3690804
# 3: 8/31/16 0.3111678
这应该起作用:
d.table[Fruit %in% c('Apple', 'Banana'),
.(Rate = sum(Count[Fruit == 'Banana']) / sum(Count[Fruit == 'Apple'])),
.(Date)]
# Date Rate
# 1: 8/29/16 0.5161086
# 2: 8/30/16 0.3690804
# 3: 8/31/16 0.3111678
这里是dcast的另一个选项
这里是dcast的另一个选项
@弗兰克,谢谢,我修好了。@弗兰克,谢谢,我修好了。