r - 通过连接列连接两个数据框

标签 r dataframe

我有两个具有相同结构的数据框 - 都有两个 ID 列和 25 个字符串数据列。我想加入两者并在 ID 匹配时连接数据列中的字符串。所以,例如:

df_1:

id_1    id_2    col_1    col2    ...    col_25
a1      b1      A        A       ...    <NA>
a1      b2      A        <NA>    ...    A
a2      b1      <NA>     <NA>    ...    A

df_2:

id_1    id_2    col_1    col2    ...    col_25
a1      b1      B        <NA>    ...    <NA>
a1      b2      <NA>     B       ...    B
a1      b3      B        <NA>    ...    B

结合起来,这应该给

df_combined:

id_1    id_2    col_1    col2    ...    col_25
a1      b1      A, B     A       ...    <NA>
a1      b2      A        B       ...    A, B
a1      b3      B        <NA>    ...    B
a2      b1      <NA>     <NA>    ...    A

当我尝试使用连接或合并时,它会重复除 ID 列之外的所有内容(因此我最终得到 50 个数据列)。我需要使用其他东西吗?

谢谢!

最佳答案

如果你没有任何空字符串,你可以这样做:

library(dplyr)    
bind_rows(df_1,df_2) %>%
  group_by(id_1,id_2) %>%
  summarize_all(~ paste(na.omit(.x),collapse=", ")) %>%
  `[<-`(.=="",value=NA)

magrittr你可以避免不太漂亮的 '[<-'并将其替换为 inset

library(magrittr)
bind_rows(df_1,df_2) %>%
  group_by(id_1,id_2) %>%
  summarize_all(~ paste(na.omit(.x),collapse=", ")) %>%
  inset(.=="",value=NA)

关于r - 通过连接列连接两个数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46423919/

相关文章:

r - 如何在 R 中绘制完美的圆形球体 (rgl.spheres)

r - 根据类似名称的列中的值将值赋予新列

r - 按月计算的观察次数/频率

r - 将一个 R 数据集中的列/行与另一个数据集的值相乘

r - 基于将特定行名称与列名称匹配的数据框设置值

python - 如何将变量连续分配给数据帧行(pandas)?

r - 多核::应用?

r - 如何将计算列添加到其他数据框的一系列联接中间的数据框?

r - 过滤 R data.frames 时更新因子水平

python - 检查是否在 PySpark 数据框中的组内找到值