我是R的新手,我正在试图弄清楚如何操纵具有行和列日期的数据。
基本上,我有一个日期的数据对象,比如2014-10-31。该对象包含未来几个月的期货结算价格:
Date 2014-10-31
2014-11-01 90.54
2014-12-01 90.32
2015-01-01 90.68
2015-02-01 91.48
2015-03-01 91.03
这将存在于一年中的每个工作日。现在,我想要类似的东西:
Date 2014-10-28 2014-10-29 2014-10-30 2014-10-31 ...
2014-11-01 90.54 90.53 90.57 90.54 ...
2014-12-01 90.21 90.23 90.75 90.32 ...
2015-01-01 90.70 90.45 90.65 90.68 ...
2015-02-01 91.48 91.56 91.53 91.48 ...
2015-03-01 91.02 91.03 91.01 91.03 ...
目前,在R中我将它作为一个列表,每天作为动物园对象,以结算日期作为名称。我知道必须有更好的方法来解决这个问题。数据框架是更好的方法,还是有任何软件包可以使这更容易?
我的最终目标是,例如,能够找到10月份的平均11月价格。因此,我需要获取10月份的所有列,并平均11月的所有价格。任何帮助将不胜感激。
答案 0 :(得分:2)
如果您有像这样的动物园对象列表:
L <- structure(list(X2014.10.28 = structure(c(90.54, 90.21, 90.7,
91.48, 91.02), index = structure(c(16375, 16405, 16436, 16467,
16495), class = "Date"), class = "zoo"), X2014.10.29 = structure(c(90.53,
90.23, 90.45, 91.56, 91.03), index = structure(c(16375, 16405,
16436, 16467, 16495), class = "Date"), class = "zoo"),
X2014.10.30 = structure(c(90.57,
90.75, 90.65, 91.53, 91.01), index = structure(c(16375, 16405,
16436, 16467, 16495), class = "Date"), class = "zoo"),
X2014.10.31 = structure(c(90.54,
90.32, 90.68, 91.48, 91.03), index = structure(c(16375, 16405,
16436, 16467, 16495), class = "Date"), class = "zoo")), .Names = c("X2014.10.28",
"X2014.10.29", "X2014.10.30", "X2014.10.31"))
然后使用cbind将它们合并到一个zoo对象中:
z <- do.call(cbind, L)
,并提供:
> class(z)
[1] "zoo"
> z
X2014.10.28 X2014.10.29 X2014.10.30 X2014.10.31
2014-11-01 90.54 90.53 90.57 90.54
2014-12-01 90.21 90.23 90.75 90.32
2015-01-01 90.70 90.45 90.65 90.68
2015-02-01 91.48 91.56 91.53 91.48
2015-03-01 91.02 91.03 91.01 91.03