由两个变量求和

时间:2013-08-16 02:02:16

标签: r sum

我有一个数据框:

       Date  area      sales
1     201204 shanghai    23
2     201204 beijing     25
3     201204 beijing     16
4     201205 shanghai    55
5     201205 beijing     17
6     201205 shanghai    16

我想输出的是一个表格如下:

Date   shanghai  beijing 
201204  23        41
201205  71        17

我如何在R?

中这样做

2 个答案:

答案 0 :(得分:11)

在基数R(sum)中有xtabs

> xtabs(sales ~ Date + area, mydf)
        area
Date     beijing shanghai
  201204      41       23
  201205      17       71

要将其作为data.frame,请将其打包在as.data.frame.matrix


要使用现在进行回合的方法来更新它,您还可以使用“dplyr”(用于聚合)和“tidyr”(用于重塑)的组合,如下所示:

library(tidyr)
library(dplyr)
mydf %>% 
  group_by(Date, area) %>% 
  summarise(sales = sum(sales)) %>% 
  spread(area, sales)
# Source: local data frame [2 x 3]
# 
#     Date beijing shanghai
# 1 201204      41       23
# 2 201205      17       71

答案 1 :(得分:5)

这是reshape2::dcast

的炮灰
library(reshape2)
# assuming your data is called `D`
dcast(Date~area, value.var = 'sales', fun.aggregate = sum, data = D)