r - 如何在r中合并两个具有多个相同ID的数据框

标签 r merge

我尝试合并两个 data.frames,就像代码中的那样。主要问题是我有几行具有相同的 ID,但我想将所有值(阶段)与 df1 中的 ID 合并。 我尝试搜索类似的问题,但找不到任何问题。

df1<-as.data.frame(c("a","a","a","a","a","c","c","c","b","b"))
colnames(df1)<-c("ID")
df2<-data.frame(c("a","a","a","a","a","b","b"),c(1,1,0,0,1,1,-1))
colnames(df2)<-c("ID","phase")

output<-cbind(c("a","a","a","a","a","c","c","c","b","b"),c(1,1,0,0,1,NA,NA,NA,1,-1))

我尝试使用 merge() 但它产生的 data.frame 比预期的输出大得多。而且我还丢失了应该与“c”合并的NA。

merge_out<-merge(df1,df2[,c("ID","phase")],by="ID")

ID phase
a     1
a     1
a     0
a     0
a     1
a     1
a     1
a     0
a     0
a     1
a     1
a     1
a     0
a     0
a     1
a     1
a     1
a     0
a     0
a     1
a     1
a     1
a     0
a     0
a     1
b     1
b    -1
b     1
b    -1

有什么想法吗?谢谢!

最佳答案

这有效吗:

library(dplyr)
> df1 %>% group_by(ID) %>%  mutate(uid = paste0(row_number(), ID)) %>% left_join(
+ df2%>% group_by(ID) %>% mutate(uid = paste0(row_number(), ID))
+ ) %>% select(-uid)
Joining, by = c("ID", "uid")
# A tibble: 10 x 2
# Groups:   ID [3]
   ID    phase
   <chr> <dbl>
 1 a         1
 2 a         1
 3 a         0
 4 a         0
 5 a         1
 6 c        NA
 7 c        NA
 8 c        NA
 9 b         1
10 b        -1

关于r - 如何在r中合并两个具有多个相同ID的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64459257/

相关文章:

r - 从批处理文件执行 Rscript - 无法正确处理 "Umlaute"(ä, ö, ü)

git - 当我使用 git stash 时,我最终会得到 <<<<<<< 更新的上游和文件中的其他内容

r - 使用 purrr/furrr 而不是 apply 将 data.frame 逐行传递给函数

r - 如何在超过 2^31 个观察值中使用 biglm

git:当git没有注意到冲突时如何手动 merge 文件

Git 仅将主文件中的单个文件 merge 到当前分支

hadoop - Hive DML事务(更新/删除)不适用于子查询

python - 合并/连接逐行 pandas 数据框

r - 如何通过 ">"拆分作为 data.frame 导入的 FASTA 文件

r - 如何在 dplyr 管道中通过 .以编程方式?