Создание функции, которая сравнивает каждую строку dataframeX с каждой строкой dataframeY. Затем добавьте значение из фрейма данных Y в X - PullRequest
0 голосов
/ 04 марта 2020

У меня есть два кадра данных (х и Y). Мне нужно сравнить каждую строку в X с каждой строкой в ​​Y, и если встречаются две логики, возьмите значение из столбца в Y и поместите его в столбец X (для этой указанной c строки). Фрейм данных X выглядит следующим образом:

Фреймы данных

Цель состоит в том, чтобы проверить каждую строку X для каждой строки Y, и если X $ Long == Y $ Longitude & X $ Lat == YLattidude для строки, присваивающей значение Y $ Site в строке, которая удовлетворяет условию X $ sink для указанной тестируемой строки c.

Я бы хотел, чтобы это было в одной функции с вводом x и y. Я пробовал некоторые коды, но это не заполнение значений.

Это пример того, что я делал.

 **Connectivity_Matrix_function<- function(X,Y){
     X$Sink <- c("NA")
    for (z in 1:nrow(X)) {
    for (i in 1:nrow(Y)) {
    if(X[z, 4] == Y[i,2] & X[z,5] == Y[i,3]) { X[z, 11] <- Y[i, 1] }
    }
    }
    }**

1 Ответ

1 голос
/ 04 марта 2020

Предлагаемое решение с использованием dplyr:

library(dplyr)

x %>% 
  left_join(y, by=c("Long"="Longitude", "Lat"="Latitude")) %>% 
  mutate(Sink = coalesce(Site, Sink))
...