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