我有两个具有相同结构的数据框 - 都有两个 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/