【发布时间】:2016-10-14 23:52:20
【问题描述】:
我陷入了合并两个数据集的困境,其简单的复杂性远远超出了我对 R 的流利程度。我尝试向here 和here 学习,但无法解决我的问题。我正在尝试合并以下两个数据框:
df1
No County Route Number
1 Anderson SR009 6150
2 Anderson SR061 5880
3 Bedford SR016 9500
4 Bedford SR130 320
5 .
6 .
7 .
8 .
df2
No. County Route Number1 abc def
1 Clay 02264 4500 50 789
2 Dickson 01544 5870 45 33
3 Anderson 01421 981 70 65
4 Anderson SR009 10000 56 56
5 Anderson SR009 6145 32 53
6 Bedford SR016 7500 23 32
7 Anderson SR061 4400 12 24
8 Anderson SR061 5875 87 26
9 Anderson SR061 15000 45 45
10 Bedford SR016 22000 71 75
11 Bedford SR016 9450 145 615
12 Bedford SR130 900 7854 76
13 Bedford SR130 310 124 25
14 Anderson SR061 5865 312 123
.
.
.
首先,应比较 df1 和 df2 中的“县”和“路线”列,如果它们完全匹配,则应选择 df2$Number1 的特定行,其值与 df1$Number 最接近,因此所有唯一的 df2 列都应添加到 df1
这是我想要实现的伪代码:
if(df1$County == Anderson & df2$County == Anderson) && if(df1$Route == SR009 & df2$Route == SR009)
then select specific row from df2$Number1 whose value is nearest to the df1$Number value,
and add all subsequent columns of df2 to corresponding row in df1
一个例子:
根据“County”和“Route”列,df1 中的第 1 行与 df2 中的第 4 行和第 5 行匹配。现在,在与 df1 中的第一行匹配的两个 df2 行中,我想在 df2 中选择其“Number1”值最接近 df1 中的“Number”值的特定行,即 6150。说这个,我想选择行df2 中的 5,因为“Number1”值是最接近 6150 的 6145,并将所有后续列从 df2 添加到 df1...
最终输出如下所示:
No County Route Number Number1 abc def . .
1 Anderson SR009 6150 6145 32 53 . .
2 Anderson SR061 5880 5875 87 26 . .
3 Bedford SR016 9500 9450 145 615 . .
4 Bedford SR139 320 310 124 25 . .
. .
. .
我非常感谢您对此提供的任何帮助。抱歉,帖子太长了。
【问题讨论】:
标签: r