Если вы используете «слияние» и «по» в SAS для объединения наборов данных, которые содержат несколько переменных с одинаковыми именами (кроме идентификаторов, с которыми вы объединяетесь), SAS объединит эти переменные в одну, используя значение прочитайте последний - это описано здесь https://communities.sas.com/t5/SAS-Programming/Merge-step-overwriting-shared-vars/m-p/281542#M57117
Текст сверху ссылка:
"Существует правило: какое бы значение не было прочитано последним. Но это правило простое, только когда слияние выполняется один к одному. В этом случае получаемое значение зависит от порядка в выражении MERGE. :
объединить a b;
по id;
Значение общих переменных (для слияния один-к-одному) берется из набора данных B. SAS считывает значение из набора данных A, а затем считывает значение из набора данных B. Значение из B равно прочитайте в последнюю очередь и перезапишите значение, прочитанное из набора данных A.
Если имеется несоответствие и идентификатор появляется только в наборе данных A, но не в наборе данных B, это будет значение, найденное в наборе данных A. "
Как заставить R вести себя так же, не комбинируя строки после определенных условий? (в SAS значения не перезаписываются NA)
library(tidyverse)
#create tibbles
df1 <- tibble(id = c(1:3), y = c("tt", "ff", "kk"))
df2 <- tibble(id = c(1,2,4), y = c(4,3,8))
df3 <- tibble(id = c(1:3), y = c(5,7,NA))
#combine the tibbles
combined_df <- list(df1, df2, df3) %>%
reduce(full_join, by = "id")
# desired output
combined_df_desired <- tibble(id = 1:4, y = c(5,7,"kk",8))