简体   繁体   English

将一个ID左连接到多个ID

[英]leftjoin one ID to multiple IDs

Is it possible to left join one id on multiple columns due to NA's? 是否可能由于不适用项而在多个列上保留一个ID?

So say I have a situation where I've got a dataframe like: 所以说我有一个像这样的数据框的情况:

aa = c(rep(4,4))
bb = c("a", "b", "c", "d")
cc = c(10, NA, 15, 4)
dd = c(NA, 2, NA, NA)

ee = c(14, 10, 12, 10)
ff = c(10, 2, 12, 6)

data <- data.frame(aa, bb, cc, dd)
data2 <- data.frame(bb, ee, ff)

where: 哪里:

> data
  aa bb cc dd
1  4  a 10 NA
2  4  b NA  2
3  4  c 15 NA
4  4  d  4 NA

> data2
  bb ee ff
1  a 14 10
2  b 10  2
3  c 12 12
4  d 10  6

Ideally, with a resulting column like: 理想情况下,结果列如下:

  aa bb cc dd ee
1  4  a 10 NA 14
2  4  b NA  2 10
3  4  c 15 NA NA
4  4  d  4 NA NA

I was thinking along the lines of: 我在考虑以下方面:

leftjoin(data, data2, by = c("aa" == "aa", "ff" == (("cc" & "dd"), na.omit = T))) leftjoin(data,data2,by = c(“ aa” ==“ aa”,“ ff” ==((“ cc”&“ dd”),na.omit = T)))

leftjoin(data, data2, by = c("bb" == "bb", "ff" == (("cc" & "dd"), na.omit = T)))

(I understand the last part is non-sensical, but to get the point across at least). (我知道最后一部分是无意义的,但至少可以理解这一点)。

This looks like a job for coalesce , your join conditions are a little confusing though, as there's no aa in data2 . 这看起来像是一项coalesce工作,但是您的加入条件有些混乱,因为data2没有aa

data %>% 
  mutate(helper = coalesce(cc, dd)) %>% 
  left_join(data2 , by = c('bb' = 'bb', 'helper' = 'ff')) %>% 
  select(-helper)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM