-6

我有一个数据框:

       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 中做到这一点?

4

2 回答 2

11

在基础 R (for 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
于 2013-08-16T02:33:01.953 回答
5

这是炮灰reshape2::dcast

library(reshape2)
# assuming your data is called `D`
dcast(Date~area, value.var = 'sales', fun.aggregate = sum, data = D)
于 2013-08-16T02:10:57.437 回答