r - 将列添加到动物园对象

标签 r zoo

我有一个动物园对象 z 10行2列如下:

Date           Return
1986-01     0.00308215260513781
1986-02     0.00305355599484584
.                .
.                .
.                .
1986-10     0.00349830477430457

我需要一个new包含z的zoo对象对象以及新列 X来自数据框df 。所需的输出应如下所示:

Date            Return            X
1986-01    0.00308215260513781    11
1986-02    0.00305355599484584    12
.                .                . 
.                .                .
.                .                .
1986-10   0.00349830477430457     20

我使用了以下代码:

new= merge(z , df$X)

但是,它给出的结果并不符合预期,但每个值都在 X 中分配给 z 的每一行。 new对象现在有 100 行。它还从动物园对象中删除了日期列。找不到问题出在哪里。

对于可重现的示例:

# get the z object
structure(c(NA, 0.00308215260513781, 0.00305355599484584, 0.00166059811703964, 
-0.00511749445720536, -0.00145300480100395, -0.00171675339332211, 
-0.00335452754121814, 0.000189812976282344, 0.00349830477430457
), .Dim = 10L, .Dimnames = list(c("1986-01", "1986-02", "1986-03", 
"1986-04", "1986-05", "1986-06", "1986-07", "1986-08", "1986-09", 
"1986-10")))

# get the df data frame
structure(list(a = 1:10, X = 11:20), .Names = c("a", "X"), row.names = c(NA, 
-10L), class = "data.frame")

最佳答案

问题是问题中的z不是zoo对象。

其中任何一个都会创建一个动物园对象,其中 z 作为第一列,df$X 作为第二列:

read.zoo(data.frame(rownames(z), Return = z, X = df$X), FUN = as.yearmon)

merge(Return = zoo(z, as.yearmon(rownames(z))), X = df$X)

给予:

               Return  X
Jan 1986           NA 11
Feb 1986  0.003082153 12
Mar 1986  0.003053556 13
Apr 1986  0.001660598 14
May 1986 -0.005117494 15
Jun 1986 -0.001453005 16
Jul 1986 -0.001716753 17
Aug 1986 -0.003354528 18
Sep 1986  0.000189813 19
Oct 1986  0.003498305 20

关于r - 将列添加到动物园对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159966/

相关文章:

r - 是否可以将自定义差异函数传递给 R 的差异函数?

r - 动态合并带后缀的 xts 对象

r - 使用Docker文件从源代码安装R软件包

image - 图形包的R图像函数添加轴标签

r - 选择不同年份的共同行

反向/向后 na.approx

R:na.locf 的行为不符合预期

r - 将多系列 Zoo 对象转换为单系列 Zoo 对象列表

r - 我不断收到此错误 “docker: invalid reference format: repository name must be lowercase.”

python - 如何将 Python Pandas Dataframe 转换为 R data.frame