如何在R中展开DATE列?

问题描述 投票:0回答:2

我有一个包含几列的数据框,在第一个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 date expand
2个回答
1
投票

这有些漫长但有效,并且都在基数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

0
投票

谢谢,艾伦,如果我要添加列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)
    
© www.soinside.com 2019 - 2024. All rights reserved.