描述我的问题有点困难。假设我有两个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$lat
和data1$long == data2$long
,则data1$ele == data2$ele
。
我还想逐行检查2个数据帧的lat和long值,以确保long& lat值匹配。
我尝试过使用data.table()和merge(),但是它们似乎都没有工作......有什么想法吗?
答案 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"]