使用R将不规则的6小时数据转换为每日累积数据

时间:2018-02-27 10:45:48

标签: r

我有以下数据:

 Date,Rain
 1979_8_9_0,8.775
 1979_8_9_6,8.775
 1979_8_9_12,8.775
 1979_8_9_18,8.775
 1979_8_10_0,0  
 1979_8_10_6,0
 1979_8_10_12,0
 1979_8_10_18,0 
 1979_8_11_0,8.025
 1979_8_12_12,0
 1979_8_12_18,0 
 1979_8_13_0,8.025

[1]数据是每小时6小时,但有些日期的6小时数据不完整。例如,1979年8月11日在00H只有一个值。我想用R来获取每天积累的这类数据。有关如何在R中轻松完成此任务的建议吗?

我会感激任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法将数据转换为日期:

dat$Date <- as.Date(strptime(dat$Date, '%Y_%m_%d_%H'))

之后你应该聚合:

aggregate(Rain ~ Date, dat, sum)

结果:

        Date   Rain
1 1979-08-09 35.100
2 1979-08-10  0.000
3 1979-08-11  8.025
4 1979-08-12  0.000
5 1979-08-13  8.025

根据Henrik的评论,您还可以转换为日期:

dat$Date <- as.Date(dat$Date, '%Y_%m_%d')

答案 1 :(得分:1)

# split the "date" variable into new, separate variable
splitDate <- stringr::str_split_fixed(string = df$Date, pattern = "_", n = 4)

df$Day    <- splitDate[,3]


# split data by Day, loop over each split and add rain variable
unlist(lapply(split(df$Rain, df$Day), sum))