Если мы хотим заменить все дубликаты, используйте duplicated
по строке с apply
и MARGIN = 1
df1[c('A', 'B', 'C', 'D')] <- t(apply(df1[c('A', 'B', 'C', 'D')], 1,
function(x) replace(x, duplicated(x)|duplicated(x, fromLast = TRUE), NA)))
df1
# session session_b A B C D
#1 162f2f8f7c5x8f6de8f8 e5c44c77b9cae93afa9457e535c81451 588238268 587606411 NA NA
#2 162f2f8f7c5x8f6de8f8 e5c44c77b9cae93afa9457e535c81451 591266911 591257117 568939090 587606411
data
df1 <- structure(list(session = c("162f2f8f7c5x8f6de8f8", "162f2f8f7c5x8f6de8f8"
), session_b = c("e5c44c77b9cae93afa9457e535c81451", "e5c44c77b9cae93afa9457e535c81451"
), A = c(588238268L, 591266911L), B = c(587606411L, 591257117L
), C = c(581149505L, 568939090L), D = c(581149505L, 587606411L
)), class = "data.frame", row.names = c(NA, -2L))