r - 如何在r中合并具有多个相同ID的两个数据框
问题描述
我试图合并两个 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
推荐阅读
- php - 如何从另一个 php 文件中获取选定的值?
- flutter - 类型为 xxxx 的对象/工厂未在 GetIt 中注册
- python - 按多列值搜索数据框
- c# - WPF 中 MultiBinding 的内存消耗似乎极端
- azure - Azure 自动化 Runas 帐户权限不足
- c++ - 如何根据输入的特定分数打印学生记录
- python - Airflow Webserver 连接到错误的数据库?
- f# - Fable-Elmish - 使用 SAFE 堆栈正确处理 F# 中的表单
- swift - 共享表从一开始就没有打开
- elasticsearch - 对关键字聚合进行不区分大小写的排序。ES 7.7.0