我想基于第二个数据集的2个变量来合并/合并两个数据集。
用语言描述,我想基于变量1(if ((echoServAddr.sin_addr.s_addr != fromAddr.sin_addr.s_addr) ||
(echoServAddr.sin_port != fromAddr.sin_port))
)加入,如果这导致VAR1
与变量2(NA
)加入。
这是一个示例,我对此的解决方案:
VAR2
我想知道是否有更好的方法?
答案 0 :(得分:2)
我们可以循环执行left_join
,并通过在'VAR3'上应用reduce
将vector
变成单个coalesce
library(tidyverse)
map(paste0("VAR", 1:2), ~
left_join(df_x, df_y, by = c("VAR0" = .x)) %>%
pull(VAR3)) %>%
reduce(coalesce)
#[1] "YES" NA "NO" "MAYBE" "YES"
或使用base R
pmin(df_y$VAR3[match(df_x$VAR0, df_y$VAR1)],
df_y$VAR3[match(df_x$VAR0, df_y$VAR2)], na.rm = TRUE)
#[1] "YES" NA "NO" "MAYBE" "YES"
或者为避免使用df
调用,请使用with
with(df_y, with(df_x, pmin(VAR3[match(VAR0, VAR1)],
VAR3[match(VAR0, VAR2)], na.rm = TRUE)))