按小时与日重塑数据,第三列的值为

时间:2016-10-20 10:25:18

标签: r dataframe reshape dcast

我试图对每小时的气候数据进行一些重塑,但我无法做到正确...... 这是数据,一天可变(365级。+ / - 1取决于年份),一小时变量(24级),一个数字温度(+/- 8760 obs)。

head(df)
####         .day .hour temperature
#### 2 2013-01-01     1          19
#### 3 2013-01-01     2          19
#### 4 2013-01-01     3          18
#### 5 2013-01-01     4          18

我的预期输出是像这样的data.frame,但是我需要温度值而不是值1(长度)......

        .day 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
1 2013-01-01 1 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
2 2013-01-02 1 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
3 2013-01-03 1 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1
4 2013-01-04 1 1 1 1 1 1 1 1 1 1  1  1  1  1  1  1  1  1  1  1  1  1  1  1

此输出是使用dcast(.day~.hour)生成的,Il也尝试了一些tidyr但没有成功。我怎样才能做到这一点?那么如果某处缺少某些线条(缺少一天等等)呢?感谢。

1 个答案:

答案 0 :(得分:1)

要将数据从长格式重新格式化为格式,我们可以使用tidyr具有相关函数spread。帮助文件在此处有足够的示例:http://cran.r-project.org/web/packages/tidyr/tidyr.pdf#page.14

require(tidyr)
spread(df, .hour, temperature, fill = NA) #fill any missing data with NA 

此处提供了可用于实现相同更改的其他选项的全面介绍:https://stackoverflow.com/a/9617424/2724299