基于另一个表的订单表

时间:2018-07-17 14:34:30

标签: r matrix

我见过很多类似的主题,但是我所看到的例子往往对它们具有更线性的趋势,因此不适用于我的问题。

我有一个看起来像这样的表

x1 x2
a  up
k  up
h  up
d  up
p  up
.  .
.  .

另一个在x1上具有完全相同条目的表,其中NROW(table1)== NROW(table2),例如:

x1 x2
k  up
a  down
d  down
.  .
.  .

我想根据table2中的x1对table1重新排序,其中x1和x2变量在输出中保持一致;例如,仍然保持正常状态。

输出看起来像这样:

x1 x2
k  up
a  up
d  up
.  .
.  .

2 个答案:

答案 0 :(得分:1)

您可以使用match()从第一个表中的第二个表中查找x1的位置并重新排序。这是您的示例中的结果。让我们按tab1重新排序tab2

tab1 <- data.frame(x1 = c("a", "k", "h", "d", "p"),
           x2 = c("up", "up", "up", "up", "up"))

tab2 <- data.frame(x1 = c("k", "a", "d"),
                   x2 = c("up", "up", "down"))

idx <- match(tab2$x1, tab1$x1)
tab1[idx,]

结果是:

  x1    x2   
1 k     up   
2 a     up   
3 d     up  

答案 1 :(得分:1)

如果您想保持table2 $ x1的顺序:

merge(table1,table2,by="x1")


  x1 x2.x x2.y
1  a   up   up
2  d   up down
3  k   up   up

,您可以选择要删除的列