我需要合并两个数据集
DF1
df1=structure(list(id = structure(c(1L, 4L, 5L, 6L, 2L, 3L), .Label = c("195/75 R16C-Tire CORDIANT Business CA",
"215/75 R17,5-Tires KAMA NR-201 driving axle", "235/70 R16-Tire KAMA-221",
"275/70 R22,5-Tire TYREX ALL STEEL VC-1 (Я-646)", "315/80 R22,5-Tire TYREX ALL STEEL DR-1 driving axle",
"315/80 R22,5-Tire TYREX ALL STEEL FR-401 steering axle"), class = "factor")), .Names = "id", class = "data.frame", row.names = c(NA,
-6L))
DF2
df2= structure(list(id = structure(c(2L, 4L, 5L, 6L, 3L, 1L), .Label = c("Auto-cutting 245 / 70R16 K-214",
"Auto-rubber 195/75 R16C Cordiant Business CA 107 / 105R all-season",
"Auto-rubber 215 / 75R17,5 K-166", "Auto-rubber 275 / 70R22,5 (11 / 70R22,5) I-646 (Tyrex all steel VC-1)",
"Auto-rubber 315 / 80R22,5 DR-1Tyrex All Steel (Я-636)", "Auto-rubber 315 / 80R22,5 FR-401 Tyrex All Steel (Я-626)"
), class = "factor")), .Names = "id", class = "data.frame", row.names = c(NA,
-6L))
我使用fuzzylogic
library("RecordLinkage")
#get weights
rpairs_jar <- compare.linkage(df1, df2,
strcmp = c("id"),
strcmpfun = jarowinkler)
rpairs_epiwt <- epiWeights(rpairs_jar)
#get wright to data frame
b=rpairs_epiwt$pairs
View(b)
在输出时我看到
我们在所有id之间都有权重。 例如,相对于所有6种面额计算权重id1。 但是我们看到df1(id1)的第一项和df2(id1)的第一项(0,61)之间的权重最大。
第二项(df1的id2)第三项(df2的id3)(0.58)之间的最大权重怎么样。
如何只留下那些比较,其中id是最重的?
即 在输出上,我们有表没有36个条目,但有六个
id1 id2 id
1 1 0,6106743
2 3 0,5994314
3 3 0,5874915
4 4 0,6288133
5 4 0,5552018
6 6 0,5642857
答案 0 :(得分:1)
我会这样做,虽然我不确定我完全理解你的问题。啊,我刚发现它:你的数据与图片中的数据不同。以下是我获得的前12行:
id1 id2 id is_match
1 1 1 0.6106743 NA
2 1 2 0.5014481 NA
3 1 3 0.4869703 NA
4 1 4 0.4752647 NA
5 1 5 0.4671400 NA
6 1 6 0.4358859 NA
7 2 1 0.4428541 NA
8 2 2 0.5752810 NA
9 2 3 0.6090623 NA
10 2 4 0.5946931 NA
11 2 5 0.5320353 NA
12 2 6 0.5055347 NA
如果你追求每个id
的最大id1
,那就是我要做的事情:
library(tidyverse)
b %>%
group_by(id1) %>%
summarise(maxId1 = max(id)) %>%
left_join(b, by = c("maxId1" = "id", "id1")) %>%
select(id1, id2, "id" = "maxId1")
这就是它的收益(这不是你上面所说的,鉴于不同的数据,但我认为是你所寻求的):
# A tibble: 6 x 3
id1 id2 id
<int> <int> <dbl>
1 1 1 0.6106743
2 2 3 0.6090623
3 3 3 0.5837645
4 4 4 0.6249495
5 5 5 0.5889200
6 6 6 0.5642857
我希望这会对你有所帮助。