Tôi đang gặp một vấn đề khó chịu mà tôi đang cố gắng tìm một giải pháp tự động. Phiên bản tốc ký là tôi có một shapefile và một bảng dữ liệu được tạo cho các vùng trong các quốc gia. Bảng dữ liệu đã tạo KHÔNG có bất kỳ loại mã GID / quản trị viên được tiêu chuẩn hóa nào khớp với shapefiles và tên vùng cũng không khớp chính xác. Hãy xem xét kỹ hơn; đây là khung dữ liệu giả của tôi + shapefile.
library(rgdal)
#load in shapefile
arm <- readOGR("D:/Country-Shapefiles/ARM_adm_shp", layer = "ARM_adm1")
#create dummy data frame
id <- c(100:110)
name <- c("Aragatsotn", "Ararat", "Armavir", "Gaghark'unik'", "Kotayk", "Lorri",
"Shirak", "Syunik'", "Tavush", "Vayots' Dzor", "Yerevan City")
value <- runif(11, 0.0, 1.0)
df <- data.frame(id, name, value)
Vì vậy, những gì tôi có là một bảng với ID dường như ngẫu nhiên, tên khu vực và một giá trị được vẽ với bản đồ choropleth. Trông như thế này:
> df
id name value
1 100 Aragatsotn 0.6923852
2 101 Ararat 0.5762024
3 102 Armavir 0.4688358
4 103 Gaghark'unik' 0.4702253
5 104 Kotayk 0.9347992
6 105 Lorri 0.1937813
7 106 Shirak 0.5162604
8 107 Syunik' 0.4332389
9 108 Tavush 0.9889513
10 109 Vayots' Dzor 0.2182024
11 110 Yerevan City 0.5791886
Nhìn vào các thuộc tính quan tâm của shapefile, chúng tôi đã nhận được điều này:
> arm@data[c("ID_1", "NAME_1")]
ID_1 NAME_1
0 1 Aragatsotn
1 2 Ararat
2 3 Armavir
3 4 Erevan
4 5 Gegharkunik
5 6 Kotayk
6 7 Lori
7 8 Shirak
8 9 Syunik
9 10 Tavush
10 11 Vayots Dzor
Lý tưởng nhất, df
sẽ bao gồm một số loại ID quản trị phù hợp để tham gia vào shapefile. Thật không may, bất cứ ai tạo ra dữ liệu mà tôi đang sử dụng đều không tuân theo các quy ước này. Ngoài ra, thật tuyệt vời khi kết hợp các tên khu vực ... nhưng như bạn có thể thấy, có mỗi biến thể nhỏ trong mỗi tên.
Kết hợp bằng tay luôn là một giải pháp dự phòng, nhưng ai muốn dành thời gian để làm điều đó? ;) Nhưng thực sự, ngay cả khi lười biếng, dự án mà tôi đang thực hiện sẽ lập bản đồ hàng chục và hàng chục quốc gia khác nhau, vì vậy tôi đang tìm kiếm một giải pháp tự động có thể làm mọi thứ mà không phải làm gì bằng tay. Điều này có thể không? Tôi bằng cách nào đó có thể ghép các tên khu vực cực đại này với các shapefiles không?
Sidenote: Tôi đang tìm kiếm grepl
các chuỗi khớp một phần cho mỗi bài đăng này , nhưng tôi không chắc liệu đây có phải là một giải pháp tiềm năng không vì tôi cần rút ra từ các tên cột thay vì nhập từng tên khu vực.
EDIT: Khi tôi khớp ID bằng tay, những gì tôi đã làm là tạo một cột mới trong khung dữ liệu của mình và thêm các thuật ngữ khớp chính xác từ shapefile. Thật không may, vì tính đặc thù của dữ liệu, thứ tự của các tên không khớp với nhau, vì vậy điều này vẫn yêu cầu một số nhập thủ công. Tôi hy vọng một số loại giải pháp hoàn toàn tự động (nếu thậm chí có thể).