【问题标题】:Merging tables by row/ rbind tables with different column lengths/names by row按行合并表/按行合并具有不同列长度/名称的表
【发布时间】:2018-03-28 08:07:04
【问题描述】:

我有许多表格,其中包含来自时间序列分析的不同 ARIMA 订单。一个简短的例子是这样的: 这两个表是 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)排序的

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

          (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

或者如果它可能只是一个大表中的两个输入表,具有“不同的列名和长度”

        (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 的方法,但它不起作用。

【问题讨论】:

  • 这两个表是否来自同一个数据框?你如何创建它们?
  • 不是这个表是我自己写的函数的结果,我跑了两次。
  • 创建于table ?
  • 请在您的帖子中包含dput(Order1)dput(Order2) 的输出。这样会更清楚。
  • 我上面的例子只是一个简化的例子。正确的结果是: > dput(ARIMA_Order) structure(c(1L, 3L, 29L, 54L, 58L), .Dim = 5L, .Dimnames = structure(list( c("( 2 1 1 ) ( 1 1 1 ) ”、“(1 1 0)(1 1 1)”、“(0 1 1)(0 1 1)”、“(2 1 1)(0 1 1)”、“(1 1 0)(0 1) 1)")), .Names = ""), class= "table") > dput(ARIMA_Order2) 结构(c(2L, 54L, 93L),.Dim = 3L,.Dimnames = structure(list(c(" (2 1 1) (0 1 1)", "(2 1 0) (0 1 1)", "(0 1 1) (0 1 1)")), .Names = ""), class= "表")

标签: r merge


【解决方案1】:
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

【讨论】:

  • 感谢您的帮助。它对我来说很重要,将不同类型的模型作为列,将频率放在行中
  • 感谢您的帮助!是否可以使用合并功能合并 10 个而不是 2 个结果?
  • @Vala 嗯……不。 merge 仅适用于两个数据帧。这是另一个有趣的问题。
  • @Vala “合并几个数据框”在 Google 上给出了一些结果。
猜你喜欢
  • 2020-06-27
  • 1970-01-01
  • 2015-05-04
  • 2013-09-03
  • 2013-04-09
  • 2014-04-10
  • 2014-06-23
  • 2017-12-04
相关资源
最近更新 更多