我正在使用R编程语言。
我有下面的map(shapefile):
library(sf)
library(leaflet)
nc <- st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) %>%
st_transform(st_crs(4326)) %>%
st_cast('POLYGON')
字符串
现在,假设我有一个数据集,该数据集包含该Map中不同面的信息(我故意丢失了一些区域
set.seed(123)
unemployement_rate = rnorm(nrow(nc), 50,5)
n <- nrow(nc)
n_NA <- round(n * 0.1)
idx <- sample(n, n_NA)
unemployement_rate[idx]
my_df = data.frame(nc$NAME, unemployement_rate)
型
**我的问题:**假设以上两个文件都存在。
我想把失业率纳入“nc”档案。我试图以这样的方式合并这两个文件,这样的行数在“nc”将不会改变。
在过去,我习惯使用MATCH函数,如上一个问题(Merging a Shapefile and a dataframe)中所建议的。然而,当我这样做的时候,NA的会被删除。
因此,我试图用不同的方法来解决这个问题:
names(my_df) <- c("NAME", "unemployement_rate")
nc_merged <- merge(nc, my_df, by = "NAME", all.x = TRUE)
# optional : replace the NA with 9999
# nc_merged$unemployement_rate[is.na(nc_merged$unemployement_rate)] <- 9999
型
但是,现在与原始文件相比,nc_merge中似乎有更多的行:
> dim(nc)
[1] 108 15
> dim(my_df)
[1] 108 2
> dim(nc_merged)
[1] 128 16
型
有人能告诉我为什么会发生这种情况,以及我该如何解决这个问题?
谢谢你,谢谢
1条答案
按热度按时间tag5nh1u1#
我误会了。您可以只使用合并函数而不进行聚合
字符串