假设我有两个数据帧,如下所示:
df1 = data.frame(ssuid=c(916860000285, 916860000285, 916925451999, 404454000285, 404454000285),
epppnum=c(101,102,101,101,102),
esex=c("M","F","M","M","F"))
df2 = data.frame(ssuid=c(916860000285, 916860000285, 916925451999, 404454000285, 404454000285),
epppnum=c(101,102,101,101,102),
erace=c(1,1,2,1,1))
我想合并它们,但是唯一的ID是ssuid和epppnum的组合。我现在的解决方案是创建一个新变量,然后使用该变量进行合并。
library(dplyr)
df1 = df1 %>% mutate(uniqueID=paste(ssuid,epppnum,sep="/")) %>%
select(uniqueID, esex)
df2 = df2 %>% mutate(uniqueID=paste(ssuid,epppnum,sep="/"))%>%
select(uniqueID, erace)
df = left_join(df1,df2,by="uniqueID")
有没有更好的办法?
谢谢!
默认情况下,left_join
将选择所有公共变量:
left_join(df1,df2)
Joining by: c("ssuid", "epppnum")
ssuid epppnum esex erace
1 916860000285 101 M 1
2 916860000285 102 F 1
3 916925451999 101 M 2
4 404454000285 101 M 1
5 404454000285 102 F 1
如您在上面的消息中看到的,要指定组合,请使用c
组合它们,即by = c("ssuid", "epppnum")
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句