通过匹配两个数据帧中每行的值来填充列值

时间:2015-10-16 17:23:08

标签: r

描述我的问题有点困难。假设我有两个data.frame,我必须通过匹配每行中的值来填充列值。

data1
         date  lat   long      ele  
1 16-JAN-1995 36.2 -113.8       NA
2 16-JAN-1995 33.8 -113.8       NA
3 16-JAN-1995 31.2 -113.8       NA
4 16-JAN-1995 28.8 -113.8       NA
5 16-JAN-1995 26.2 -113.8       NA
6 16-JAN-1995 23.8 -113.8       NA

data2
   lat   long     ele
1 36.2 -113.8 1526.25
2 33.8 -113.8  612.94
3 31.2 -113.8  328.62
4 28.8 -113.8  367.81
5 26.2 -113.8   58.50
6 23.8 -113.8    0.00

Data1有大约40k行,data2有大约500行。

我想要

  

如果data1$lat == data2$latdata1$long == data2$long,则data1$ele == data2$ele

我还想逐行检查2个数据帧的lat和long值,以确保long& lat值匹配。

我尝试过使用data.table()和merge(),但是它们似乎都没有工作......有什么想法吗?

2 个答案:

答案 0 :(得分:1)

基础R中的简单解决方案:

indices <- df1$lat == df2$lat & df1$long == df2$long

df1$ele[indices] <- df2$ele[indices]

答案 1 :(得分:1)

另一种方法,通过@Roman Lustrik建议连接。也在基地R。

df1$ele <- df2[match(paste(df1$lat,df1$long),paste(df2$lat,df2$long)),"ele"]