合并两个R语言DataFrame报错:'by'必须指定唯一有效列
解决merge操作中"'by' must specify a uniquely valid column"错误
嘿,我来帮你搞定这个合并数据框时的报错问题!这个错误其实是R在告诉你:它找不到你指定的用来合并的有效列,咱们来一步步排查修复:
问题根源拆解
你的代码里有两个明显的问题导致了报错:
- 列名拼写+大小写错误:你的
student数据框里的学号列是Roll_No,但你在merge里写成了ROll_No——R是严格区分大小写的,第二个字母o被你写成大写O,它自然找不到这个列。 - merge函数语法不完整:你写的
by.y...是半截语法,没写完,正确的应该是指定elec里对应的学号列名Roll,也就是by.y = "Roll"。
修正后的完整代码
student<-data.frame("Roll_No"=c("202","203","204","205","206","157"),"First_Name"=c("Shahrukh","Shakti","Shantanu","Shashank","Shirke","Abhinav"),"Last_Name"=c("Khan","Rawat","Verma","Sinha","Ganesh","MIshra"),"State"=c("MP","MP","UT","UP","Maharashtra","MP")) elec<-data.frame("Roll"=c("202","203","204","205","206","157"),"Subjects"=c("Operations","Operations","Operations","Analytics","Marketing","Marketing")) print(student) print(elec) # 修正拼写和语法后的merge操作 kpv <- merge(student, elec, by.x = "Roll_No", by.y = "Roll") # 查看合并结果 print(kpv)
小技巧分享
如果两个数据框用来合并的列名完全一致,你可以简化代码,不用分开写by.x和by.y,直接用by = "列名"就行。比如要是把elec的列名改成Roll_No,那合并代码就可以写成merge(student, elec, by = "Roll_No"),更简洁~
内容的提问来源于stack exchange,提问作者Shashank Sinha
相关产品推荐
相关产品推荐

