【发布时间】:2019-01-23 01:19:00
【问题描述】:
我有两个具有相同列名的数据框 (x, y)。例如,FIRST、NAME1、NAME2、NAME3。我需要按“FIRST”列合并它们,但像这样重新排序其他列:FIRST、NAME1.x、NAME1.y、NAME2.x、NAME2.y 等。
x
FIRST NAME1 NAME2 NAME3
q1 xxx xxx xxx
q2 xxx xxx xxx
q3 xxx xxx xxx
q4 xxx xxx xxx
y
FIRST NAME1 NAME2 NAME3
q1 yyy yyy yyy
q2 yyy yyy yyy
q3 yyy yyy yyy
q4 yyy yyy yyy
如果我像这样创建新的数据框:
df = merge(x,y, by = "FIRST")
我明白了
FIRST NAME1.x NAME2.x NAME3.x NAME1.y NAME2.y NAME3.y
q1 xxx xxx xxx yyy yyy yyy
q2 xxx xxx xxx yyy yyy yyy
q3 xxx xxx xxx yyy yyy yyy
q4 xxx xxx xxx yyy yyy yyy
但我想得到下一个结果:
FIRST NAME1.x NAME1.y NAME2.x NAME2.y NAME3.x NAME3.y
q1 xxx yyy xxx yyy xxx yyy
q2 xxx yyy xxx yyy xxx yyy
q3 xxx yyy xxx yyy xxx yyy
q4 xxx yyy xxx yyy xxx yyy
仅对列重新排序不是解决方案,因为将来总会有 x 和 y 具有不同的列数。
【问题讨论】:
-
这对你有用吗:
df[, sort(names(df))]? -
x和y中的列是否具有您可以订购的前缀?我不认为有一个连接过程会自动交错列。 -
@markus 的评论很可能会解决您的问题,这个问题stackoverflow.com/questions/7334644/… 中也提到了这个问题
-
@markus,这项工作。好决定!谢谢。