Pat*_*tty 5 time datetime average r dataframe
我有一个大约 1000 万行的数据框,跨越大约 570 天。使用 striptime 转换日期和时间后,数据如下所示:
date X1
1 2004-01-01 07:43:00 1.2587
2 2004-01-01 07:47:52 1.2585
3 2004-01-01 17:46:14 1.2586
4 2004-01-01 17:56:08 1.2585
5 2004-01-01 17:56:15 1.2585
Run Code Online (Sandbox Code Playgroud)
我想计算每一天的平均值(如一年中的几天,而不是一周中的几天),然后绘制它们。例如。获取所有日期为“2004-01-01”的行,计算平均价格,然后对“2004-01-2”执行相同的操作,依此类推。
同样,我对找到平均每月价值或每小时价格感兴趣,但我想一旦我知道如何获得平均每日价格,我就可以计算出这些。
我最大的困难是自动从日期变量中提取一年中的哪一天。如何循环遍历所有 365 天并计算每天的平均值,并将其存储在列表中?
我能够使用 weekdays() 函数找到一周中某天的平均值,但我找不到任何类似的东西。
这是使用dplyrand的解决方案lubridate。首先,通过使用floor_date(请参阅下面的thelatemail评论)将日期四舍五入到最接近的天单位来简化日期,然后使用group_by日期并计算平均值summarize:
library(dplyr)
library(lubridate)
df %>%
mutate(date = floor_date(date)) %>%
group_by(date) %>%
summarize(mean_X1 = mean(X1))
Run Code Online (Sandbox Code Playgroud)
使用该lubridate包,您可以使用类似的方法按月、周或小时获取平均值。例如,要按月计算平均值:
df %>%
mutate(date = month(date)) %>%
group_by(date) %>%
summarize(mean_X1 = mean(X1))
Run Code Online (Sandbox Code Playgroud)
并按小时:
df %>%
mutate(date = hour(date)) %>%
group_by(date) %>%
summarize(mean_X1 = mean(X1))
Run Code Online (Sandbox Code Playgroud)