按小时与天重塑数据,使用第三列的值
Reshape data by hour vs day, with value of a third column
我正在尝试对每小时的气候数据进行一些重塑,但我无法正确...
这是数据,一天变量(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
但没有成功。我怎样才能做到这一点?如果某处缺少一些行(缺少一天等)怎么办?谢谢
要将数据从长格式重新格式化为宽格式,我们可以使用 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
此处全面介绍了可用于实现相同更改的其他选项:
我正在尝试对每小时的气候数据进行一些重塑,但我无法正确... 这是数据,一天变量(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
但没有成功。我怎样才能做到这一点?如果某处缺少一些行(缺少一天等)怎么办?谢谢
要将数据从长格式重新格式化为宽格式,我们可以使用 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
此处全面介绍了可用于实现相同更改的其他选项: