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

时间:2021-06-15 16:57:38

I have the following data:

我有以下数据:

 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] The data is six hourly but some dates have incomplete 6 hourly data. For example, August 11 1979 has only one value at 00H. I would like to get the daily accumulated from this kind of data using R. Any suggestion on how to do this easily in R?

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

I'll appreciate any help.

我会感激任何帮助。

2 个解决方案

#1


1  

You can transform your data to dates very easily with:

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

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

After that you should aggregate with:

之后你应该聚合:

aggregate(Rain ~ Date, dat, sum)

The result:

        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

Based on the comment of Henrik, you can also transform to dates with:

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

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

#2


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))

#1


1  

You can transform your data to dates very easily with:

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

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

After that you should aggregate with:

之后你应该聚合:

aggregate(Rain ~ Date, dat, sum)

The result:

        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

Based on the comment of Henrik, you can also transform to dates with:

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

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

#2


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))