【发布时间】:2015-03-28 10:24:29
【问题描述】:
我正在尝试对具有不同列数的两个 xts 数据集进行行绑定:
数据集 1:
one <- structure(c(0, 0.009009, 0.008929, -0.00885, 0, -0.017857, -0.027957,
-0.00885, -0.013393, -0.024887, 0.00232, -0.009259, 0, 0, 0,
0, 0, 0, -0.017794, 0.028986, -0.007143, 0.007194, 0.021429,
0.017483, 0, 0, 0, 0, 0, 0, 0.007968, -0.011858, 0, -0.032, -0.008264,
0.045833, 0.015924, 0.00627, -0.003115, 0, 0.00625, 0.024845), class = c("xts",
"zoo"), .indexCLASS = c("POSIXt", "POSIXct"), tclass = c("POSIXt",
"POSIXct"), tzone = "", index = c(346406400, 346492800, 346665600,
346924800, 347011200, 347097600), .Dim = 6:7, .Dimnames = list(
NULL, c("ALLEGHENY.POWER.SYSTEMS.INC", "ALLIED.CHEMICAL.CORP",
"APPLICATION.ENGR.CORP", "ALLIS.CHALMERS.CORP", "AMERICAN.ELECTR.LABS.INC",
"A.E.L.INDUSTRIES.INC", "AMAX.INC")))
数据集 2
two <- structure(c(0, 0, 0, 0, 0, 0, 0.071429, 0.066667, 0, -0.125,
0, 0, 0.018182, 0.026786, 0, 0.008696, -0.025862, -0.017699,
0.009346, 0.006944, 0.011494, -0.045455, -0.028571, 0.014706,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), class = c("xts", "zoo"), .indexCLASS = c("POSIXt",
"POSIXct"), tclass = c("POSIXt", "POSIXct"), tzone = "", index = c(347270400,
347529600, 347616000, 347702400, 347788800, 347875200), .Dim = c(6L,
6L), .Dimnames = list(NULL, c("A.C.S.ENTERPRISE.INC", "A.C.S.INDUSTRIES.INC",
"ALLEGHENY.POWER.SYSTEMS.INC", "ALLIED.CHEMICAL.CORP", "ALLIED.CORP",
"ALLIED.SIGNAL.INC")))
我尝试了rbind(one,two, by=colnames(one)),但收到以下错误:
Error in rbind(deparse.level, ...) :
data must have same number of columns to bind by row
基本上我想对xts 进行行绑定并使用0 添加其他列
处理缺失的列。
期望的输出:
DES <- structure(c(0, 0.009009, 0.008929, -0.00885, 0, -0.017857, 0.018182,
0.026786, 0, 0.008696, -0.025862, -0.017699, -0.027957, -0.00885,
-0.013393, -0.024887, 0.00232, -0.009259, 0.009346, 0.006944,
0.011494, -0.045455, -0.028571, 0.014706, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -0.017794, 0.028986, -0.007143, 0.007194, 0.021429,
0.017483, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0.007968, -0.011858, 0, -0.032, -0.008264, 0.045833, 0, 0,
0, 0, 0, 0, 0.015924, 0.00627, -0.003115, 0, 0.00625, 0.024845,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0.071429, 0.066667, 0, -0.125, 0, 0, 0, 0, 0, 0, 0,
0, 0.009346, 0.006944, 0.011494, -0.045455, -0.028571, 0.014706,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(12L, 11L), .Dimnames = list(
NULL, c("ALLEGHENY.POWER.SYSTEMS.INC", "ALLIED.CHEMICAL.CORP",
"APPLICATION.ENGR.CORP", "ALLIS.CHALMERS.CORP", "AMERICAN.ELECTR.LABS.INC",
"A.E.L.INDUSTRIES.INC", "AMAX.INC", "A.C.S.ENTERPRISE.INC",
"A.C.S.INDUSTRIES.INC", "ALLIED.CHEMICAL.CORP.1", "ALLIED.SIGNAL.INC"
)), index = c(346406400, 346492800, 346665600, 346924800,
347011200, 347097600, 347270400, 347529600, 347616000, 347702400,
347788800, 347875200), class = c("xts", "zoo"), .indexCLASS = c("POSIXt",
"POSIXct"), tclass = c("POSIXt", "POSIXct"), tzone = "")
【问题讨论】:
-
您的列名已关闭。你想 rbind 他们 asis 吗?还是 rbind 共享列名的列?
-
你好 @Avinash 我想将它们与共享相同列名的那些进行 rbind。
-
@akrun 当
merge.xts()时,我得到一个合并side by side的xts...在此示例中,one和two共享的唯一名称是:@987654334 @ &ALLIED.CHEMICAL.CORP.如果我merge.xts()它将返回一个包含 13 列的对象,而所需的只有 11 列(因为它们共享两个常见的标题名称) -
@Rime 请检查以下解决方案。我不明白
11列。你只有两列是通用的。 -
@Rime 我可能错过了你的目标。你能显示预期的输出吗