【发布时间】:2021-02-16 13:51:28
【问题描述】:
我有两个数据集。对于每个数据集,每两列是一对,*a 作为第一列,*b 作为第二列。
例如df1,对 A1,df1$A1a = 第一列 & df1$A1b = 第二列。
同样,df2,对 B1,df2$B1a = 第一列 & df2$B1b = 第二列。
df1:
ID A1a A1b A2a A2b
1 2 3 2 3
2 3 1 2 1
3 1 3 1 2
4 2 2 3 3
5 1 2 2 1
df2:
ID B1a B1b B2a B2b
1 1 2 2 3
2 3 2 1 1
3 2 3 2 2
4 3 2 2 3
5 2 2 3 1
最终数据 (df3) 应如下所示:
ID C1a C1b C2a C2b
1 1 2 2 3
2 3 1 1 1
3 1 3 1 2
4 2 2 2 3
5 1 2 2 1
我想做以下事情:
- 首先,比较 df1 和 df2 之间每对的第一列并确定最小值。例如。对于 ID=1,比较
df1$A1a= 2 和df2$B1a= 1,因为df2$B1a具有较低的值,所以使用 df2 中的对来改变新列。 IE。df3$C1a= 1,df3$C1b= 2。 - 如果每对的第 1 列相同,则使用第 2 列来确定哪些值对来改变新列。例如。对于 ID=2,第一列显示
df1$A1a= 3 和df2$B1a= 3,因此使用第二列来确定,因为df1$A1b= 1 和df2$B1b= 2,值对应该来自 df1。 IE。df3$C1a= 3 和df3$C1b= 1。 - 如果 df1 和 df2 中的两个对相同,则使用这些值。例如。对于 ID=1,第一列
df1$A2a= 2 和df2$B2a= 2 相同,第二列df1$A2b= 3 和df2$B2b= 3 相同,则新列应为df3$C1a= 2和df3$C1b= 3。
希望自动执行上述操作,以便代码自动比较 df1 和 df2 中的每一对,这样我就不需要单独比较这些对(例如,先做 A1 和 B1,然后做 A2 和 B2 等),而是代码只是对数据集中的每一对重复。感谢您的帮助!
【问题讨论】:
标签: r if-statement dplyr