我有两个数据框,需要根据候选者和选区列合并。现在的问题是,在这两个数据框中,两个数据框中的名称拼写之间存在差异。
例如,在一个数据框中,名称为Ashutosh Singh博士,在另一个数据框中为Ashutosh Singh博士。 在一个数据框中,名字叫Vikash Singh博士,在另一个名字里叫Vikash Singh。
我要附上两个数据框的屏幕截图。 first data frame
我必须分别将第一数据帧列CAND_NAME和AC_NAME映射到第二数据帧列候选者和选区,并且必须将它们合并为一个。
我也正在共享Excel文件和R代码。我必须将三张纸合并为一张。
Link for the excel file
R代码
setwd("/home/lenovo/Documents/r_prog/")
library(readxl)
candidate2017=read_excel("LA 2017.xlsx", sheet = 1)
electors2017=read_excel("LA 2017.xlsx", sheet = 2)
ManipurCandidates2017ADR=read_excel("LA 2017.xlsx", sheet = 3)
ManipurCandidate2017=candidate2017[grepl("Manipur", candidate2017$ST_NAME),]
ManipurElectors2017=electors2017[grepl("Manipur", electors2017$ST_NAME),]
ManipurElectors2017 = data.frame(lapply(ManipurElectors2017, function(v) {
if (is.character(v)) return(toupper(v))
else return(v)
}))
ManipurCandidates2017ADR = data.frame(lapply(ManipurCandidates2017ADR, function(v) {
if (is.character(v)) return(toupper(v))
else return(v)
}))
ManipurCandidate2017 = data.frame(lapply(ManipurCandidate2017, function(v) {
if (is.character(v)) return(toupper(v))
else return(v)
}))
View(ManipurCandidate2017)
View(ManipurElectors2017)
View(ManipurCandidates2017ADR)
mergedData = merge(ManipurCandidate2017,ManipurCandidates2017ADR ,
by.x=c('CAND_NAME'), by.y=c('Candidate'), all = TRUE)
我是R新手,请帮助。 提前谢谢。
答案 0 :(得分:0)
可能的解决方案涉及使用近似字符串匹配(模糊匹配)。检出agrep()
函数。您当然可以将agrep()
嵌入到merge()
调用中。由于您没有提供可复制的示例,因此我无法编写代码。
呼叫看起来像这样:
dat3 <- merge(x=dat1,y = dat2[agrep(dat1$ID1[1],dat2$ID2),],all=TRUE)