将3列重新整理成矩阵

时间:2016-03-02 14:40:03

标签: r matrix reshape2

我有3列数据,我想重塑成一个矩阵,其中列为created_at,行为citibike_station_id

head(sample)
  available_bike_count          created_at citibike_station_id
1                   21 2015-10-08 00:00:00                  72
2                    7 2015-10-08 20:10:00                  72
3                   18 2015-10-08 06:50:00                  72
4                   19 2015-10-08 10:10:00                  72
5                   18 2015-10-08 02:30:00                  72
6                   17 2015-10-08 05:00:00                  72
> dim(sample)
[1] 69511     3

因此,我必须按created_atcitibike_station_id

进行分组
> length(unique(sample$created_at))
[1] 145

> length(unique(sample$citibike_station_id))
[1] 482

created_at表示10分钟的时间间隔 - 应该有145列,因为有145个唯一的时间间隔(代表一天的数据);并且应该有482行,因为有citibike_station_id的482个唯一值。

这是数据最终应该是什么样子的示例 - 但是,在此示例中,列名来自不同的日期和年份。

head(data[1:6])
  station_id X2014.08.18.20.00.00 X2014.08.18.20.10.00 X2014.08.18.20.20.00
1          1                    1                    0                    0
2          2                   18                   18                   19
3          3                    5                    4                    4
4          4                   21                   20                   20
5          5                    9                   10                    8
6          6                    9                    9                    9
  X2014.08.18.20.30.00 X2014.08.18.20.40.00
1                    2                    1
2                   18                   18
3                    4                    4
4                   21                   22
5                    5                    7
6                    9                    9

如何使用dplyrtidyr执行此操作?

library(dplyr)
library(tidyr)

matrix <-  sample  %>% 
  group_by(created_at, citibike_station_id)%>%
  spread(citibike_station_id, created_at)

然而这不起作用。 reshape2包提供更好的解决方案吗?

0 个答案:

没有答案