按行/ rbind表合并具有不同列长度/行的名称

时间:2018-03-28 08:07:05

标签: r merge

我在时间序列分析中包含了许多包含不同ARIMA-Orders的表格。一个简短的例子是这样的: 这两个表是Order1和Order2,包含a)不同的订单b)不同的组合频率。

Order1
(1,0,1) (1,1,1) (2,1,4)
     4       5       9

Order2
(1,0,1) (3,0,4) (0,1,1) (2,1,2)
    1        2       7       10

在上一步中,两个表按sort(Order1)和sort(Order2)

排序

我想逐行合并两个表,以获得一个" big"有两行的表。 我的预期输出应该是这样的:

          (1,0,1) (1,1,1)  (2,1,4) (3,0,4) (0,1,1) (2,1,2)
Order 1        4       5        9       0      0        0
Order 2        1       0        0       2      7        10

或者它可能只是一个大表中的两个输入表,其中包含"不同的列名和lentghs"

        (1,0,1) (1,1,1) (2,1,4)
Order 1      4       5       9 
        (1,0,1) (3,0,4) (0,1,1) (2,1,2)
Order 2        1     2       7      10

我尝试过像merge或rbind这样的东西,但它没有用。

1 个答案:

答案 0 :(得分:0)

dd1 <- as.data.table(t1)
dd2 <- as.data.table(t2)
merge(dd1, dd2, by="Var1", incomparables=NA, all=TRUE)

可以吗?

> merge(dd1,dd2, by="Var1", incomparables = NA, all=TRUE)
                 Var1 Freq.x Freq.y
1 ( 2 1 1 ) ( 1 1 1 )      1     NA
2 ( 1 1 0 ) ( 1 1 1 )      3     NA
3 ( 0 1 1 ) ( 0 1 1 )     29     93
4 ( 2 1 1 ) ( 0 1 1 )     54      2
5 ( 1 1 0 ) ( 0 1 1 )     58     NA
6 ( 2 1 0 ) ( 0 1 1 )     NA     54

要将频率设为行:

> ddd <- merge(dd1, dd2, ...) # as above
> ddd <- dd[,-1]
> rownames(ddd) <- dd$Var1
> t(ddd)
       ( 2 1 1 ) ( 1 1 1 ) ( 1 1 0 ) ( 1 1 1 ) ( 0 1 1 ) ( 0 1 1 )
Freq.x                   1                   3                  29
Freq.y                  NA                  NA                  93
       ( 2 1 1 ) ( 0 1 1 ) ( 1 1 0 ) ( 0 1 1 ) ( 2 1 0 ) ( 0 1 1 )
Freq.x                  54                  58                  NA
Freq.y                   2                  NA                  54