r - 合并数据框重新排序列
问题描述
我有两个具有相同列名的数据框(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 = 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)
因此,您可以将列放在您想要的位置,并使用您想要的名称。
推荐阅读
- css - 重命名 p-tabview 中的选项卡
- javascript - 通过编辑一个常见的 .JS 文件将 DialogFlow 标记动态添加到站点
- elasticsearch - elasticsearch helm chart 上的 HTTPS
- java - java.lang.IllegalArgumentException:没有为 id 0x7f0901d1 找到视图
- php - 检查当前行php
- java - 将多态对象列表反序列化为对象字段
- javascript - API 在未发送 /api/users/create 响应的情况下解析,这可能会导致请求停止。下一个
- python-3.x - 如何在具有多个参数的熊猫数据帧上调用函数
- flutter - 小部件是在应该使用之前创建的 => 导致错误
- mysql - 使用光标按几何距离分页