我有以下数据:
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中轻松完成此任务的建议吗?
我会感激任何帮助。
答案 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))