我有一个数据框,上面有像这样的降水日期。
df_pp = data.frame(Date = c("2020-04-01 11:25:25","2020-04-01 11:27:85","2020-04-02 05:23:25",
"2020-04-02 05:24:25","2020-04-25 11:52:25","2020-04-25 11:53:25"), PP = 0.2)我还有另一个像这样的df,一个月比这个例子快了5分钟。
df = data.frame(Date = format(seq.POSIXt(as.POSIXct("2020-04-01"), as.POSIXct("2020-04-30"),
by = "5 min") ,"%Y-%m-%d %H:%M:%S", tz="GMT"), PP = 0)我想要将df_PP中前两个日期的PP相加5分钟,例如,df_pp中的第一个PP小时是"2020-04-01 11:25:25“和"2020-04-01 11:27:25",我想将该日期的PP值在2020-04-01 11:25:00中的df$PP中求和,但我有大量的日期,因此无法手动设置条件。
你能帮我吗?非常感谢。
发布于 2020-10-01 07:09:45
您可以直接在df_pp上使用lubridate包中的舍入函数,而不必担心与第二个数据帧匹配。
将Date列转换为Date Time对象,并使用floor_date()以5分钟间隔向下舍入:
library(lubridate)
df_pp %>%
mutate(round_time = floor_date(as.POSIXct(Date), "5 mins")) %>%
group_by(round_time) %>%
summarise(PP_5min = sum(PP)) %>%
ungroup()
round_time PP_5min
<dttm> <dbl>
1 2020-04-01 11:25:00 0.4
2 2020-04-02 05:20:00 0.4
3 2020-04-25 11:50:00 0.4https://stackoverflow.com/questions/64146830
复制相似问题