Добавление столбца из кадра данных в кадр данных SpatialPolygon

Я пытался добавить столбец числовых данных из фрейма данных в фрейм данных SpatialPolygon, но каждая попытка приводит к тому, что последний фрейм данных преобразуется в стандартный фрейм данных, аналогичный первому. Мне нужно было добавить столбец, чтобы я мог создать картограмму с переменной столбца в качестве фокуса. Очевидно, что стандартный фрейм данных бесполезен, так как я пытаюсь создать карту, используя tmap.

Вот как я пытался добавить столбец (где shapefilecomb — пространственный фрейм данных, а wardturnout — переменная, содержащая рассматриваемый столбец):

shapefilecomb <- c(wardturnout)

person LoriDori    schedule 19.04.2017    source источник
comment
Попробуйте 'shapefilecomb$wardturnout ‹-wardturnout'   -  person mdsumner    schedule 19.04.2017
comment
@mdsumner Спасибо, это сработало с точки зрения добавления столбца, но теперь, когда я пытаюсь запустить «tm_shape (shapefilecomb) + tm_fill (turnout)», я получаю сообщение об ошибке «Ошибка: аргумент заполнения не содержит ни цветов, ни допустимых имен переменных». переменная явки содержит числовые данные, которые я хочу отобразить на хлороплете. Любые идеи?   -  person LoriDori    schedule 20.04.2017
comment
Я использовал wardturnout, убедитесь, что имена совпадают   -  person mdsumner    schedule 20.04.2017


Ответы (1)


Добавление столбца в слот данных SpatialPolygonsDataFrame с помощью оператора присваивания shapefilecomb$wardturnout <- wardturnout работает, но это не самый безопасный способ выполнения работы. Он зависит только от положения (первый элемент данных переходит к первому полигону, второй — ко второму и так далее). Это может стать грязным.

Его лучше всего зарезервировать для вычисляемых полей — тип присвоения shapefile$valuepercapita <- shapefile$value / shapefile$population.

Для данных из внешних источников гораздо лучше присваивать значение по ключу. Функция append_data из пакета tmap делает это очень хорошо и выдает вам сообщение не только при возникновении ошибки, но и подтверждение идеального совпадения всех данных (что мне показалось приятным штрихом при работе с большими наборами несовершенных данных).

outShape <- append_data(srcShape, frmData, key.shp = "KOD_LAU1", key.data = "LAU1")

Редактировать (по состоянию на 9/2019): Этот ответ, похоже, все еще актуален... Однако мир изменился.

  1. tmap::append_data() был перемещен в tmaptools::append_data() и в настоящее время устарел

  2. sf заменил sp в качестве основного пакета пространственных данных в R.

В мире sf пространственные данные хранятся в модифицированном data.frames, и наиболее подходящим способом назначения элементов данных по ключу является одна из функций *_join() из dplyr - либо dplyr::left_join(), чтобы быть в безопасности, либо dplyr::inner_join(), если фильтрация с обеих сторон действительно желательна. поведение.

person Jindra Lacko    schedule 26.06.2017