加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

datetime – 合并R中的聚合数据

发布时间:2020-12-13 20:44:59 所属栏目:百科 来源:网络整理
导读:跟进我的 previous question关于将每小时数据汇总到每日数据中,我想继续(a)每月汇总和(b)将每月汇总合并到原始数据帧中. 我的原始数据框如下所示: Lines - "Date,Outdoor,Indoor01/01/2000 01:00,30,2501/01/2000 02:00,31,2601/01/2000 03:00,33,2402/01/2
跟进我的 previous question关于将每小时数据汇总到每日数据中,我想继续(a)每月汇总和(b)将每月汇总合并到原始数据帧中.

我的原始数据框如下所示:

Lines <- "Date,Outdoor,Indoor
01/01/2000 01:00,30,25
01/01/2000 02:00,31,26
01/01/2000 03:00,33,24
02/01/2000 01:00,29,25
02/01/2000 02:00,27,26
02/01/2000 03:00,39,24
12/01/2000 02:00,26
12/01/2000 03:00,24
12/31/2000 23:00,28,25"

我的previous question中已经回答了每日聚合,然后我可以找到从那里生成每月聚合的方法,如下所示:

Lines <- "Date,Month,OutdoorAVE
01/01/2000,Jan,31.33
02/01/2000,Feb,31.67
12/01/2000,Dec,31.33"

其中OutdoorAVE是每日最低和最高室外温度的月平均值.我最终想要的是这样的:

Lines <- "Date,Indoor,OutdoorAVE
01/01/2000 01:00,25,31.33
01/01/2000 02:00,26,31.33
01/01/2000 03:00,24,31.33
02/01/2000 01:00,31.67
02/01/2000 02:00,31.67
02/01/2000 03:00,31.67
12/01/2000 02:00,31.33
12/01/2000 03:00,31.33
12/31/2000 23:00,31.33"

我不知道如何做到这一点.任何帮助是极大的赞赏.

尝试ave和例如POSIXlt来提取月份:
zz <- textConnection(Lines)
Data <- read.table(zz,header=T,sep=",",stringsAsFactors=F)
close(zz)

Data$Month <- strftime(
     as.POSIXlt(Data$Date,format="%m/%d/%Y %H:%M"),format='%b')
Data$outdoor_ave <- ave(Data$Outdoor,Data$Month,FUN=mean)

给:

> Data
              Date Outdoor Indoor Month outdoor_ave
1 01/01/2000 01:00      30     25   Jan    31.33333
2 01/01/2000 02:00      31     26   Jan    31.33333
3 01/01/2000 03:00      33     24   Jan    31.33333
4 02/01/2000 01:00      29     25   Feb    31.66667
5 02/01/2000 02:00      27     26   Feb    31.66667
6 02/01/2000 03:00      39     24   Feb    31.66667
7 12/01/2000 02:00      27     26   Dec    31.33333
8 12/01/2000 03:00      39     24   Dec    31.33333
9 12/31/2000 23:00      28     25   Dec    31.33333

编辑:然后只需计算数据中的月份,如上所示并使用合并:

zz <- textConnection(Lines2) # Lines2 is the aggregated data
Data2 <- read.table(zz,stringsAsFactors=F)
close(zz)

> merge(Data,Data2[-1],all=T)
  Month             Date Outdoor Indoor OutdoorAVE
1   Dec 12/01/2000 02:00      27     26      31.33
2   Dec 12/01/2000 03:00      39     24      31.33
3   Dec 12/31/2000 23:00      28     25      31.33
4   Feb 02/01/2000 01:00      29     25      31.67
5   Feb 02/01/2000 02:00      27     26      31.67
6   Feb 02/01/2000 03:00      39     24      31.67
7   Jan 01/01/2000 01:00      30     25      31.33
8   Jan 01/01/2000 02:00      31     26      31.33
9   Jan 01/01/2000 03:00      33     24      31.33

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读