首页 文章

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

提问于
浏览
2

我有很多表包含来自时间序列分析的不同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

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

我想按行合并两个表,以获得一个包含两行的“大”表 . 我的预期输出应该是这样的:

(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
    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
    

相关问题