оставьте один идентификатор для нескольких идентификаторов - PullRequest
0 голосов
/ 16 мая 2018

Возможно ли левое объединение одного идентификатора в нескольких столбцах из-за NA?

Итак, скажем, у меня есть ситуация, когда у меня есть такой фрейм данных:

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)

где:

> 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

В идеале, с таким результирующим столбцом, как:

  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

Я думал о том, как:

левое соединение (данные, данные2, по= c ("aa" == "aa", "ff" == (((cc "&" dd "), na.omit = T)))

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

(IПонимать, что последняя часть бессмысленна, но, по крайней мере, донести смысл).

1 Ответ

0 голосов
/ 16 мая 2018

Это похоже на работу для coalesce, ваши условия объединения немного сбивают с толку, так как в data2 нет aa.

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