[在此处输入图像描述] [1] [在此处输入图像描述] [2]我有一个数据框 RH,其中包含每小时数据,我想将其转换为每日最大和最小数据。这段代码非常有用[question]:将每小时数据汇总为每日汇总
[enter image description here][1][enter image description here][2]I have a data frame "RH", with hourly data and I want to convert it to daily maximum and minimum data. This code was very useful [question]:Aggregating hourly data into daily aggregates
RH$Date <- strptime(RH$Date,format="%y/%m/%d) RH$day <- trunc(RH$Date,"day") require(plyr) x <- ddply(RH,.(Date), summarize, aveRH=mean(RH), maxRH=max(RH), minRH=min(RH) )但是我的前5年数据不是每小时3小时数据,所以这些年没有结果。有什么建议吗?谢谢您。
But my first 5 years data are 3 hours data not hourly. so no results for those years. Any suggestion? Thank you in advance.
'data.frame':201600个观测值,包含3个变量: $日期:chr 1985/01/01 1985 / 01/01/01 1985/01/01 1985/01/01 ... $小时:int 1 2 3 4 5 6 7 8 9 10 ... $ RH: int不适用不适用93不适用不适用不适用不适用不适用...
推荐答案您提供的链接是一个古老的代码。代码仍然非常好,可以正常工作,但是这里的使用 dplyr 和 lubridate
The link you provided is an old one. The code is still perfectly good and would work, but here's a more modern version using dplyr and lubridate
df <- read.table(text='date_time value "01/01/2000 01:00" 30 "01/01/2000 02:00" 31 "01/01/2000 03:00" 33 "12/31/2000 23:00" 25',header=TRUE,stringsAsFactors=FALSE) library(dplyr);library(lubridate) df %>% mutate(date_time=as.POSIXct(date_time,format="%m/%d/%Y %H:%M")) %>% group_by(date(date_time)) %>% summarise(mean=mean(value,na.rm=TRUE),max=max(value,na.rm=TRUE), min=min(value,na.rm=TRUE)) `date(date_time)` mean max min <date> <dbl> <dbl> <dbl> 1 2000-01-01 31.33333 33 30 2 2000-12-31 25.00000 25 25编辑 由于已经有一个日期列,因此应该可以使用:
EDIT Since there's already a date column, this should work:
RH %>% group_by(Date) %>% summarise(mean=mean(RH,na.rm=TRUE),max=max(RH,na.rm=TRUE), min=min(RH,na.rm=TRUE))更多推荐
将每小时数据汇总为R中缺少值的每日汇总
发布评论