使用多个“ by”合并/合并两个数据帧?

伊格纳西奥

假设我有两个数据帧,如下所示:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用rollsum并合并两个数据帧

来自分类Dev

根据多个条件合并两个数据帧

来自分类Dev

基于多个重叠合并两个数据帧

来自分类Dev

使用dplyr合并来自两个数据帧的信息

来自分类Dev

使用R合并两个数据帧列表

来自分类Dev

将多个数据帧拆分,应用并合并为一个数据帧

来自分类Dev

基于R中的多个列合并两个数据帧

来自分类Dev

尝试不使用merge()和使用union(),match()或%in%合并两个数据帧

来自分类Dev

使用非唯一键合并两个数据帧

来自分类Dev

我是否使用“合并”或“联接”来比较两个数据帧?

来自分类Dev

如何使用dplyr或其他软件包合并两个数据帧?

来自分类Dev

使用常用词按行合并两个数据帧

来自分类Dev

使用R中最接近的下限值合并两个数据帧

来自分类Dev

使用 ID 和匹配字符串合并两个数据帧

来自分类Dev

将多个文件读入并合并或合并到公共ID列的一个数据帧中

来自分类Dev

如何求和并合并两个数据帧?

来自分类Dev

在R中将两个数据帧相乘并合并

来自分类Dev

在R中将两个数据帧相乘并合并

来自分类Dev

Pandas 连接并合并两个数据帧

来自分类Dev

将两个数据框合并为多个值

来自分类Dev

使用python合并两个数据框

来自分类Dev

合并两个数据框而不使用for循环

来自分类Dev

如何使用主键合并两个数据表?

来自分类Dev

使用pd.concat合并多个数据帧

来自分类Dev

spark scala 数据帧合并多个数据帧

来自分类Dev

在python熊猫中,如何合并两个数据帧,同时使用另一个的权重将值散布在一个数据中?

来自分类Dev

数组翻转并合并多个数组

来自分类Dev

数组翻转并合并多个数组

来自分类Dev

使用LinQ合并两个数组

Related 相关文章

热门标签

归档