R.仅使用重复项联接一次
我需要帮助,以连接两个数据帧的一个关键点与重复。 我只想为每个副本合并一次,但我不能使用R.仅使用重复项联接一次,r,join,merge,R,Join,Merge,我需要帮助,以连接两个数据帧的一个关键点与重复。 我只想为每个副本合并一次,但我不能使用dplyr::left\u join 例如: ds1 <- data.frame( id = c(1,1,1,2,2), V2 = c(5,6,7,5,8) ) ds2<-data.frame( id=c(1,2), Value=c(56,98) ) ds3<-left_join(ds1, ds2
dplyr::left\u join
例如:
ds1 <- data.frame(
id = c(1,1,1,2,2),
V2 = c(5,6,7,5,8)
)
ds2<-data.frame(
id=c(1,2),
Value=c(56,98)
)
ds3<-left_join(ds1, ds2, by="id")
但我需要:
# id V2 Value
1 1 5 56
2 1 6
3 1 7
4 2 5 98
5 2 8
保留您的代码,只需添加以下内容:
ds3$Value[duplicated(ds3[c("Value","id")])] <- NA
# id V2 Value
# 1 1 5 56
# 2 1 6 NA
# 3 1 7 NA
# 4 2 5 98
# 5 2 8 NA
ds3$Value[duplicated(ds3[c(“Value”,“id”)])]这里有另一个想法,使用切片
,左连接
,然后全连接
ds3 <- ds1 %>%
group_by(id) %>%
slice(1) %>%
left_join(ds2, by = "id") %>%
full_join(ds1, by = c("id", "V2")) %>%
ungroup() %>%
arrange(id, V2)
ds3
# # A tibble: 5 x 3
# id V2 Value
# <dbl> <dbl> <dbl>
# 1 1. 5. 56.
# 2 1. 6. NA
# 3 1. 7. NA
# 4 2. 5. 98.
# 5 2. 8. NA
ds3%
分组依据(id)%>%
切片(1)%>%
左联合(ds2,by=“id”)%%>%
完全联接(ds1,by=c(“id”,“V2”))%>%
解组()%>%
安排(id,V2)
ds3
##tibble:5 x 3
#id V2值
#
# 1 1. 5.56
# 2 1. 6.NA
# 3 1. 7.NA
# 4 2. 5.98
# 5 2. 8.NA
ds3 <- ds1 %>%
group_by(id) %>%
slice(1) %>%
left_join(ds2, by = "id") %>%
full_join(ds1, by = c("id", "V2")) %>%
ungroup() %>%
arrange(id, V2)
ds3
# # A tibble: 5 x 3
# id V2 Value
# <dbl> <dbl> <dbl>
# 1 1. 5. 56.
# 2 1. 6. NA
# 3 1. 7. NA
# 4 2. 5. 98.
# 5 2. 8. NA