我有一个数据帧"zadavatele";以及数据帧";Final_Town_Contacts";。在df zadavatele中,有一列";买方名称"以名称和df";Final_Town_Contacts";有一列";名称";以及";id";。问题是名称的格式有点不同,所以我不能使用match函数。列";买方名称"包含名称和其他单词,因此它包含列"的全部内容;名称";以及其他一些角色。另一个问题是,并非所有城镇都包括在";zadavatele";df包含在";Final_Town_Contacts";。
我想找到匹配的城镇,然后写变量";id";从数据帧";Final_Town_Contacts";对于";zadavatele";。
为了演示我想做什么,这里有两个数据帧:
# A tibble: 3 x 1
buyer_name
<chr>
1 xx abc
2 y fdg
3 z sad
Name id
<chr> <dbl>
1 y 54
2 z 11
3 x 32
我希望在";zadavatele";数据帧:
buyer_name id
<chr> <dbl>
1 xx abc 32
2 y fdg 54
3 z sad 11
我正在考虑使用for循环:
for (i in 1:nrow(zadavatele)) {
for (n in 1:nrow(Final_Town_Contacts)){
if(str_detect(zadavatele$buyer_name[i], Final_Town_Contacts$Name[n] &&
!is.na(str_detect(zadavatele$buyer_name[i], Final_Town_Contacts$Name[n]))))
zadavatele$id[n] = Final_Town_Contacts$`LAU 2`
}
}
但这并没有奏效。你知道怎么做吗?
谢谢你的帮助!
这样做有效,因此由于内部联接,只有匹配的名称才会被包括在内。buyer_name的第一个字符与name列匹配。如果情况并非总是如此,请告诉我。
library(dplyr)
df1 %>% mutate(Name = substr(buyer_name,1,1)) %>% inner_join(df2) %>% select(1,3)
Joining, by = "Name"
buyer_name id
1 xx abc 32
2 y fdg 54
3 z sad 11