Сначала, чтобы упростить воспроизведение вашего примера, было бы удобно включить ваши данные следующим образом:
df1 <- structure(list(V1 = 1:10, V2 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), V3 = c(7506L, 28272L, 36598L, 37512L, 48795L, 50660L,
52850L, 54447L, 54816L, 70664L), V4 = c(10949L, 29965L, 37518L,
40365L, 50666L, 52365L, 54453L, 54527L, 64015L, 74349L), V5 = c(3L,
147L, 843L, 52L, 150L, 92L, 1337L, 279L, 2L, 17L), V6 = c(0.228471,
0.6033058, 0.7459016, 0.4121901, 0.8050847, 0.6995614, 0.8991597,
0.9858824, 0.2787356, 0.5549451)), class = "data.frame", row.names = c(NA,
-10L))
df2 <- structure(list(V1 = 1:10, V2 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L), V3 = c(1L, 7506L, 10943L, 13169L, 20064L, 28272L,
29959L, 36598L, 37512L, 40359L), V4 = c(7512L, 10949L, 13175L,
20070L, 28278L, 29965L, 36604L, 37518L, 40365L, 48801L)), class = "data.frame", row.names = c(NA,
-10L))
Затем сгенерируйте индекс с двумя ключами в каждом наборе данных и сопоставьте позиции
index <- match(paste0(df2$V3, df2$V4), paste0(df1$V3, df1$V4))
Затем используйте этот индекс для заполнения значений во втором кадре данных:
df2$V5 <- df1$V5[index]
df2$V6 <- df1$V6[index]
Конечно, у вас могут быть разные имена столбцов в ваших данных, поскольку я просто быстро скопировал / вставил ваши данныеи получил имена строк и прочее.
df2
V1 V2 V3 V4 V5 V6
1 1 1 1 7512 NA NA
2 2 1 7506 10949 3 0.2284710
3 3 1 10943 13175 NA NA
4 4 1 13169 20070 NA NA
5 5 1 20064 28278 NA NA
6 6 1 28272 29965 147 0.6033058
7 7 1 29959 36604 NA NA
8 8 1 36598 37518 843 0.7459016
9 9 1 37512 40365 52 0.4121901
10 10 1 40359 48801 NA NA