【发布时间】:2011-12-15 03:11:57
【问题描述】:
我有一个数据集,第一列是年-季格式的日期,如下所示
1959-I
1959-II
1959-III
1959-IV
1960-I
1960-II
1960-III
1960-IV
我已将数据集导入 R,但我不知道如何使用 as.Date 函数将其转换为 Date 格式,因为 there doesn't appear to be a conversion specification for quarters 而我刚刚开始学习 R。
我能想到的最好的就是
#extract the year
> dates <- substring(data$X,1,4)
> dates[1:8]
[1] "1959" "1959" "1959" "1959" "1960" "1960" "1960" "1960"
> dates <- as.numeric(dates)
#extract the quarter
> quarters <- substring(data$X,6)
> quarters[1:10]
[1] "I " "II " "III " "IV " "I " "II " "III " "IV "
但这不可能是最好的方法,它仍然给我留下了如何处理我的系列quarters的问题。更糟糕的是,每个字符的末尾都有一个空白字符,我不知道如何处理,因为季度字符串有 3 种不同的“长度”。
当然,另一种选择是制作我自己的宿舍系列,例如
quarters <- rep(c(1,2,3,4),dates[length(dates)]-dates[1])
(我为自己写了最后一行而感到自豪!)。
所以我的问题:有没有一种内置的方法可以导入我在 R 中的格式的季度数据,如果没有,还有其他格式(仍然是季度数据)?有任何关于最佳方式的建议吗?
【问题讨论】:
-
为每个季度值分配一个日期就足够了吗?即
I = 01/01, II = 04/01, III = 07/01, IV = 10/01或类似的东西? -
@Chase,我真正想知道的是 R 是否识别季度数据,就像它识别年、月等一样。如果不是,那么我将不得不做其他事情,你的建议是绝对是一个选择(但肯定 R,一个如此完善的统计软件包,会有一个内置的替代方案?)
-
我可以给你一个现成的解决方案,沿着第一条路走下去,但你很可能是正确的:内置替代方案。看起来
ts对象通过frequency = 4参数支持季度数据。您可能还想查看CRAN Task View for Time Sieres。从我所见,包 zoo 和 xts 也非常健壮和灵活,所以它们可能有一些东西。我敢打赌,很快就会有人来给我们展示一些花哨的东西。 -
@Chase 我无法安装包“ts”,因为它似乎不适用于 R 版本 2.14(我检查了一些镜像,但不是全部)。我刚才又试了一次,还是不行。我去看看 zoo 或者 xts 有没有东西
-
ts本身并不是一个包,它是默认加载的stats包的一部分。您应该可以输入?ts来查看帮助页面。这些例子有一个季度数据的例子。
标签: r