我有数据框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$id
和dtshp$id
共用一对时,如何用lat
的值填充long
的值?
答案 0 :(得分:2)
library(dplyr)
dt %>%
left_join(dtshp, by = c("Longitude" = "long", "Latitude" = "lat"))
这将在合并的数据框中为id.x
和id.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