rdataframenamissing-data

How do I transfer NAs from one dataframe to same position in a second dataframe


I want to update values in my main dataframe based on the presence/position of NA values in my ref dataframe. Example data:

main <- data.frame(Q1 = 1:5,
                   Q2 = rev(1:5),
                   Q3 = c(4, 5, 1, 2, 3))

ref <- data.frame(Q1 = c(0.4, NA, 1.6, 1.1, 0.9),
                  Q2 = c(NA, 2.7, 1.8, 1.5, 0.8),
                  Q3 = c(1.3, 0.9, NA, NA, 2.6))

main
#   Q1 Q2 Q3
# 1  1  5  4
# 2  2  4  5
# 3  3  3  1
# 4  4  2  2
# 5  5  1  3

ref
#    Q1  Q2  Q3
# 1 0.4  NA 1.3
# 2  NA 2.7 0.9
# 3 1.6 1.8  NA
# 4 1.1 1.5  NA
# 5 0.9 0.8 2.6

Desired outcome:

main
#   Q1 Q2 Q3
# 1  1 NA  4
# 2 NA  4  5
# 3  3  3 NA
# 4  4  2 NA
# 5  5  1  3

Solution

  • The simplest way:

    main[is.na(ref)] <- NA