Как объединить два шейп-файла, используя общий атрибут в R?

#r #join #gis #arcgis #shapefile

#r #Присоединиться #гис #arcgis #шейп-файл

Вопрос:

У меня есть два шейп sf1 -файла и sf2 для одной и той же области. sf1 — это данные о населении за 2015 год и имеет 6 переменных.

введите описание изображения здесь

sf2 это данные о населении за 2010 год и имеет 5 переменных.

введите описание изображения здесь

Оба имеют один общий атрибут GEOID . Я хочу получить комбинированный слой с 8 переменными (6 с 2015 года и 2 (переменная и значение) с 2010 года).

Как я могу объединить два шейп-файла, используя общий атрибут GEOID в R (такой же, как join в ArcGIS? Я попытался объединить их.

 sf3 <- merge(sf1, sf2)
  

Он объединяет два слоя, чтобы дать мне 11 переменных. Это не то, что я хочу. Я хочу объединить таблицы атрибутов для двух слоев и получить один из общих атрибутов.

Я попробовал inner_join() , что выдает ошибку

Ошибка: у y не должно быть класса sf; для пространственных соединений используйте st_join() .

Я пытался st_join() , но получил 229 объектов. из 10 переменных. Я просто хочу одинаковое количество переменных с 8 переменными.

Комментарии:

1. Попробуйте inner_join(sf1, sf2, by="GEOID")

2. Я действительно пробовал это. Я получил сообщение об ошибке «Ошибка в UseMethod («inner_join»): нет применимого метода для ‘inner_join’, применяемого к объекту класса «c (‘SpatialPolygonsDataFrame’, ‘SpatialPolygons’, ‘Spatial’, ‘SpatialVector’)»

3. Похоже, что ваши геометрии не одинаковы для каждого геоида между годами, поэтому st_join возвращает то, чего вы не ожидаете. Объединение по умолчанию — ‘st_intersects . Either try another join method for st_join` или выберите геометрию какого года использовать и отбросьте другую геометрию, допускающую a left_join .

4. Обычно вы не можете использовать пространственные типы данных с функциями sf. Убедитесь, что ваши данные являются объектами sf, используя st_as_sf