特定时间范围的时间平均值(r)
我试图提取每小时0到40分钟之间所有变量的平均值特定时间范围的时间平均值(r),r,datetime,filter,R,Datetime,Filter,我试图提取每小时0到40分钟之间所有变量的平均值 dput(head(df)) structure(list(DateTime = structure(c(1563467460, 1563468060, 1563468660, 1563469260, 1563469860, 1563470460), class = c("POSIXct", "POSIXt"), tzone = "GMT"), date = structure(c(1563467460, 1563468060, 1563
dput(head(df))
structure(list(DateTime = structure(c(1563467460, 1563468060,
1563468660, 1563469260, 1563469860, 1563470460), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), date = structure(c(1563467460, 1563468060,
1563468660, 1563469260, 1563469860, 1563470460), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), Date = structure(c(18095, 18095, 18095,
18095, 18095, 18095), class = "Date"), TimeCtr = structure(c(1563467460,
1563468060, 1563468660, 1563469260, 1563469860, 1563470460), class = c("POSIXct",
"POSIXt"), tzone = "GMT"), MassConc = c(0.397627, 0.539531, 0.571902,
0.608715, 0.670382, 0.835773), VolConc = c(175.038, 160.534,
174.386, 183.004, 191.074, 174.468), NumbConc = c(234.456, 326.186,
335.653, 348.996, 376.018, 488.279), MassD = c(101.426, 102.462,
101.645, 102.145, 101.255, 101.433)), .Names = c("DateTime",
"date", "Date", "TimeCtr", "MassConc", "VolConc", "NumbConc",
"MassD"), row.names = c(NA, 6L), class = "data.frame")
到目前为止我所做的
hourly_mean<-mydata %>%
filter(between(as.numeric(format(DateTime, "%M")), 0, 40)) %>%
group_by(DateTime=format(DateTime, "%Y-%m-%d %H")) %>%
summarise(variable1_mean=mean(variable1))
小时平均值%
过滤器(介于(如.numeric(格式为DateTime,“%M”))、0、40)之间%>%
分组依据(日期时间=格式(日期时间,%Y-%m-%d%H))%>%
总结(可变1_平均值=平均值(可变1))
但它给了我整个时期的一个平均值。非常欢迎任何帮助。我们可以将
日期时间
转换,使用上限日期
和小时单位对日期时间
进行四舍五入,从日期时间
中提取分钟,并过滤以保留少于40分钟的分钟,按小时
分组,并取平均值
library(lubridate)
library(dplyr)
df %>%
dplyr::mutate(DateTime = ymd_hm(DateTime),
hour = ceiling_date(DateTime, "hour"),
minutes = minute(DateTime)) %>%
filter(minutes <= 40) %>%
group_by(hour) %>%
summarise_at(vars(ends_with("Conc")), mean)
库(lubridate)
图书馆(dplyr)
df%>%
dplyr::mutate(DateTime=ymd_hm(DateTime),
小时=上限日期(日期时间,“小时”),
分钟=分钟(日期时间))%>%
过滤器(分钟%
分组单位(小时)%>%
总结(变量(以“Conc”结尾)、平均值)
数据
df <- structure(list(DateTime = structure(1:7, .Label = c("2019-08-0810:07",
"2019-08-0810:17", "2019-08-0810:27", "2019-08-0810:37", "2019-08-0810:47",
"2019-08-0810:57", "2019-08-0811:07"), class = "factor"), MassConc = c(0.556398,
1.06868, 0.777654, 0.87289, 0.789704, 0.51948, 0.416676), NumbConc = c(588.069,
984.018, 964.634, 997.678, 1013.52, 924.271, 916.357), VolConc = c(582.887,
979.685, 963.3, 994.178, 1009.52, 922.104, 916.856), Conc = c(281.665,
486.176, 420.058, 422.101, 429.841, 346.539, 330.282)), class =
"data.frame", row.names = c(NA, -7L))
df而不是“summary_at..”术语,我放了“summary(mass=mean(mass)),因为我的实际列名不是可变的1、2等,而是“mass”等。最后,它不起作用,显示错误消息“0行。所有格式都无法解析。找不到格式。“@user2928318错误似乎不是因为summary
,而是ymd\u hm
。尝试df%>%mutate(DateTime=ymd\u hm(DateTime))
它是否工作或显示NA
并带有相同的警告?您能否尝试as.POSIXct(df$DateTime,format=“%Y-%m-%d%H:%m”)
它是否工作或返回NA
。您可能会显示一些不同的数据格式。您能否发布dput(head(mydata))
?谢谢,Ronak。第一个术语“df%>%变异(DateTime=ymd_hm(DateTime))。”正在工作,但下一个术语似乎不工作。我的DateTime已经是POSIXct格式。请在上面查找我的数据更新。只修改了列名。@user2928318如果您可以发布dput
,这将非常有帮助,因为当我复制粘贴您的数据时,它似乎对我有效。请参阅更新的答案,您可以使用我的数据并检查它是否有效rks没有错误吗?我的帖子已经更新了。我之前刚刚发布了整个数据集的样本。错误是“。fn
必须是长度为1 strin”。