0

我正在尝试对每小时的气候数据进行一些重塑,但我无法正确...这是数据,一天变量(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,但是我需要内部的温度值而不是值一(长度)...

        .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),我也尝试了一些但tidyr没有成功。我怎样才能做到这一点?如果某处缺少某些行(缺少一天等)怎么办?谢谢。

4

1 回答 1

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

于 2016-10-20T14:49:45.153 回答