我有两个具有相同列名的数据帧(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的列数不同。
答案 0 :(得分:1)
您可以考虑在合并后对列进行重新排序:
df = merge(x,y, by = "FIRST")
df <- data.frame(FIRST = df$FIRST,
NAME1.x = df$NAME1.x,
NAME1.y = df$NAME1.y,
NAME2.x = df$NAME2.x,
NAME2.y = df$NAME2.y,
NAME3.x = df$NAME3.x,
NAME3.y = df$NAME3.y)
因此,您可以将列与所需的名称放在一起。
答案 1 :(得分:0)
您可以先使用dplyr
个功能left_join(df1, df2, by = 'FIRST')
然后使用
%>%
select(FIRST, NAME1.x, NAME1.y, NAME2.x, NAME2.y, NAME3.x, NAME3.y)
重新排序。管道使它一步步快乐。