Я хочу объединить / объединить два набора данных на основе 2 переменных второго набора данных.
Описанное словами, я хочу присоединиться на основе переменной 1 (VAR1
), и если это приведет к объединению NA
с переменной 2 (VAR2
).
Вот примери мое решение этого вопроса:
df_x <- data.frame(VAR0=c("A","P","C","D","Z"), stringsAsFactors = F)
df_y <- data.frame(VAR1=c("A","B","C","D","E"),
VAR2=c("A","F","T","D","Z"),
VAR3=c("YES", "YES", "NO", "MAYBE", "YES"),
stringsAsFactors = F)
require(dplyr)
# LEFT JOIN TWICE TO MEET BOTH CONDITIONS
lj_1 <- left_join(df_x, df_y, by=c("VAR0" = "VAR1"))
lj_2 <- left_join(df_x, df_y, by=c("VAR0" = "VAR2"))
# THEN REPLACE NAs FROM FIRST LEFT JOIN WITH VALUE FROM SECOND LEFT JOIN
ifelse(lj_1$VAR3 %in% NA, lj_2$VAR3, lj_1$VAR3)
# [1] "YES" NA "NO" "MAYBE" "YES"
Мне было интересно, есть ли лучший способ сделать это?