У меня есть фрейм данных с 500 наблюдениями для каждого из 3106 округов США. Я хотел бы объединить этот фрейм данных с SpatialPolygonsDataFrame.
Я попробовал несколько подходов. Я обнаружил, что если я отфильтрую данные по переменной iter_id
, я смогу использовать sp::merge()
для объединения наборов данных. Я полагаю, что тогда смогу их собрать вместе. sp::merge()
не допускает правое или полное объединение, и пространственные данные должны находиться в левом положении. Так что многие к одному не будут работать. Действительно неприятный способ, который я попробовал:
(Я не уверен, как представить фрейм данных с интересующими переменными здесь)
library(choroplethr)
data(continental_us_states)
us <- tigris::counties(continental_us_states)
gm_y_corr <- tribble(~GEOID,~iter_id,~neat_variable,
01001,1,"value_1",
01003,1,"value_2",
...
01001,2,"value_3",
01003,2,"value_4",
...
01001,500,"value_5",
01003,500,"value_6")
filtered <- gm_y_corr %>%
filter(iter_id ==1)
us.gm <- sp::merge(us, filtered ,by='GEOID')
for (j in 2:500) {
tmp2 <- gm_y_corr %>%
filter(iter_id == j)
tmp3 <- sp::merge(us, tmp2,by='GEOID')
us.gm <- rbind(us.gm,tmp3)
}
Я знаю, что должен быть лучший способ. Я пытался group_by
. Но найдено несколько совпадений. Поэтому я не должен понимать group_by
.
> geo_dat <- gm_y_corr %>%
+ group_by(iter_id)%>%
+ sp::merge(us, .,by='GEOID')
Error in .local(x, y, ...) : non-unique matches detected
Я хотел бы объединить пространственные данные с интересными данными.