创建一个将dataframeX的每一行与dataframeY的每一行进行比较的函数。然后将数据帧Y中的值添加到X

时间:2020-03-04 15:41:29

标签: r data-manipulation

我有两个数据帧(x和Y)。我需要将X中的每一行与Y中的每一行进行比较,如果满足两个逻辑,则从Y中的列中获取值并将其放置在X的列中(针对该特定行)。数据框X看起来像:

Dataframes

目标是针对Y的每一行测试X的每一行,并且如果X $ Long == Y $ Longitude&X $ Lat == YLattidude为一行,则在满足条件的那一行分配Y $ Site的值X $ sink对于要测试的特定行的条件。

我希望将其与输入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 个答案:

答案 0 :(得分:1)

使用dplyr的建议解决方案:

library(dplyr)

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