我有一个包含几列的数据框,在第一个DATE,在其他日期是不同站点的每日温度
DATE SITE1 SITE2
1 2017-01-01 0.101694912 0.15413890
2 2017-01-02 -0.118305088 -0.06586110
3 2017-01-03 -0.938305088 -0.88586110
4 2017-01-04 1.501694912 1.55413890
5 2017-01-05 -1.238305088 -1.18586110
....
我如何通过添加新的DATE-HOUR列来扩展数据框(通过将相同的温度值分配给不同站点中同一天的所有小时)?
DATE DATE-HOUR SITE1 SITE2
1 2017-01-01 2017-01-01-1:00:00 0.101694912 0.15413890
2 2017-01-01 2017-01-01-2:00:00 0.101694912 0.15413890
3 2017-01-01 2017-01-01-3:00:00 0.101694912 0.15413890
....
25 2017-01-02 2017-01-01:00:00 -0.118305088 -0.06586110
26 2017-01-02 2017-01-02:00:00 -0.118305088 -0.06586110
27 2017-01-02 2017-01-03:00:00 -0.118305088 -0.06586110
..
这有些漫长但有效,并且都在基数R中完成:
n <- nrow(df)
df <- df[rep(seq(n), each = 24),]
df$DATETIME <- as.POSIXct(df$DATE) + rep(0:23 * 3600, n)
df <- df[c(1, 4, 2, 3)]
df
#> DATE DATETIME SITE1 SITE2
#> 1 2017-01-01 2017-01-01 00:00:00 0.1016949 0.1541389
#> 1.1 2017-01-01 2017-01-01 01:00:00 0.1016949 0.1541389
#> 1.2 2017-01-01 2017-01-01 02:00:00 0.1016949 0.1541389
#> 1.3 2017-01-01 2017-01-01 03:00:00 0.1016949 0.1541389
#> 1.4 2017-01-01 2017-01-01 04:00:00 0.1016949 0.1541389
#> 1.5 2017-01-01 2017-01-01 05:00:00 0.1016949 0.1541389
#> 1.6 2017-01-01 2017-01-01 06:00:00 0.1016949 0.1541389
#> 1.7 2017-01-01 2017-01-01 07:00:00 0.1016949 0.1541389
#> 1.8 2017-01-01 2017-01-01 08:00:00 0.1016949 0.1541389
#> 1.9 2017-01-01 2017-01-01 09:00:00 0.1016949 0.1541389
#> 1.10 2017-01-01 2017-01-01 10:00:00 0.1016949 0.1541389
#> ...etc
谢谢,艾伦,如果我要添加列DATE_MINUTE,它如何工作?最好从DATE开始还是从DATETIME开始?我尝试使用此字符串,但是有一个我不明白的错误。
从带有DATETIME的数据框中
n <- nrow(df)
df <- df[rep(seq(n), each = 60),]
df$DATE_MINUTE <- as.POSIXct(df$DATETIME) + rep(0:59 * 60, n)