根据一个通用值对和另一个数据框填充一个数据框列

时间:2019-06-20 22:49:48

标签: r

我有数据框dtshp

id=c(0,0)
long<-c(140.9619,140.9626   )
lat<-c(-35.79979,-35.77946)
order<-c(1,2)
hole<-c(FALSE,FALSE)
piece<-c(1,1)
group<-c(0.1,0.1)
dtshp<-data.frame(id,long,lat,order,hole,piece,group)

和数据框dt

Town<-c("WATSONIA","NORTH MELBOURNE")
lat<-c(-35.79979,-35.77946)
long<-c(140.9619,140.9626)
pop<-c(1232131,213312)
dt<-data.frame(Town,lat,long,pop)
dt["id"] <- NA

dt$iddtshp$id共用一对时,如何用lat的值填充long的值?

2 个答案:

答案 0 :(得分:2)

library(dplyr)
dt %>% 
  left_join(dtshp, by = c("Longitude" = "long", "Latitude" = "lat"))

这将在合并的数据框中为id.xid.y创建列,因为两个数据框都有针对id的列。您可以先将其从dt数据框中删除,或者在加入后使用mutate / transmute / select选择所需的列。

答案 1 :(得分:1)

dt$id <- dtshp[dtshp$long == dt$long & dtshp$lat == dt$lat,]$id

给出:

           Town       lat     long     pop id
       WATSONIA -35.79979 140.9619 1232131  0
NORTH MELBOURNE -35.77946 140.9626  213312  0