全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2017 5
2020-05-12
我有一个每日的汇率收益率数据,我已经设置成一个时间序列,我的目标是让每一季度的数据加总,得到单个季度的收益率数据。
已有时间序列如下:
> head(cdr_xts)
                   [,1]
2010-01-04 -0.006468614
2010-01-05  0.002576387
2010-01-06  0.004052406
2010-01-07  0.001200528
2010-01-08 -0.004810785
2010-01-11  0.012460225


然后我想让每一季度加总,比如2010-01-04到2010-03-31的数据加总得到一个数据,并且该数据对应时间2010-03-31,最终得到一个新的周期为季度的时间数列或数据框。

我用了如下代码:
> by <- unique(timeLastDayInQuarter(time(cdr_xts)))
> cqr <- aggregate(cdr_xts, by, mean)


但是报错:
> cqr <- aggregate(cdr_xts, by, mean)
Error in aggregate.zoo(cdr_xts, by, mean) :
  length(time(x)) == length(by[[1]]) is not TRUE


求大神帮忙解决,感激不尽!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-5-13 00:20:47

Error in aggregate.zoo(cdr_xts, by, mean) :
length(time(x)) == length(by[[1]]) is not TRUE
已经给了你答案
应该是unique()之后by的长度和cdr_xts的长度不一致了

另一种方法,供参考

library(lubridate)
by1 <- year(time(cdr_xts))
by2 <- quarters(time(cdr_xts))
by <- paste0(by1,by2)
cqr <- aggregate(cdr_xts, by, mean)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-13 01:12:21
龙熏风 发表于 2020-5-13 00:20
Error in aggregate.zoo(cdr_xts, by, mean) :
length(time(x)) == length(by[[1]]) is not TRUE
已经给了 ...
完美解决了我的问题!真的太强了!感激感激!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-13 01:47:46
龙熏风 发表于 2020-5-13 00:20
Error in aggregate.zoo(cdr_xts, by, mean) :
length(time(x)) == length(by[[1]]) is not TRUE
已经给了 ...
能不能再麻烦您简单解释一下这段代码的逻辑!感激不尽!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-13 08:30:27
康乐村小白 发表于 2020-5-13 01:47
能不能再麻烦您简单解释一下这段代码的逻辑!感激不尽!
把每个元素的年份和季度提取出来,作为aggregate()的依据
你可以看看aggregate的帮助文件
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-5-13 09:54:46
龙熏风 发表于 2020-5-13 08:30
把每个元素的年份和季度提取出来,作为aggregate()的依据
你可以看看aggregate的帮助文件
好的,感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群