我见过很多类似的主题,但是我所看到的例子往往对它们具有更线性的趋势,因此不适用于我的问题。
我有一个看起来像这样的表
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
. .
. .
答案 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
,您可以选择要删除的列