Сопоставление базы данных (с АН) с картой мира - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно вывести свою базу данных на карту мира. Я использую карту:

#importation of the map of the world
theme_set(theme_bw())
world <- ne_countries(scale = "medium", type="countries", returnclass = c("sf"))
class(world)

#convert sf to sp (as the prof)
worldmap<-as(world,"Spatial")
class(worldmap)

Моя база данных содержит 78 стран, но, поскольку мне нужно сопоставить столбец «код» моей базы данных с кодом карты, мне пришлось включить все страны и писать NA, где у меня не было данных.

# A tibble: 241 x 12
   code  country sales2010      gdp  gdppc population   Export   Import tradecost skills
   <chr> <chr>       <dbl>    <dbl>  <dbl>      <dbl>    <dbl>    <dbl>     <dbl>  <dbl>
 1 ABW   Aruba          NA NA          NA          NA NA       NA           NA     NA   
 2 AFG   Afghan…        NA NA          NA          NA NA       NA           NA     NA   
 3 AGO   Angola         NA NA          NA          NA NA       NA           NA     NA   
 4 AIA   Anguil…        NA NA          NA          NA NA       NA           NA     NA   
 5 ALB   Albania        NA NA          NA          NA NA       NA           NA     NA   
 6 ALD   Aland          NA NA          NA          NA NA       NA           NA     NA   
 7 AND   Andorra        NA NA          NA          NA NA       NA           NA     NA   
 8 ARE   United…        NA NA          NA          NA NA       NA           NA     NA   
 9 ARG   Argent…     44287  4.24e11 10386.   40788453  8.11e10  6.88e10      2.83   9.48
10 ARM   Armenia         4  9.26e 9  3218.    2877319  2.21e 9  4.54e 9      1.37  10.9 
# … with 231 more rows, and 2 more variables: investmentcost <dbl>, distance <dbl>

Когда я пытаюсь запустить код, который сопоставляет данные с картой, появляется следующая ошибка:

> worldmap@data <- data.frame(database,worldmap@data
+                             [match(database[, "code"],worldmap@data[, "gu_a3"]),])
Warning message:
In data.frame(database, worldmap@data[match(database[, "code"],  :
  row.names ricavati da una variabile con pochi elementi e quindi non utlizzabili

Что означает : "row.names получены из переменной с несколькими элементами и, следовательно, не могут быть использованы"

> lJenks2013 <- classIntervals(var = worldmap@data$sales2010,
+                              n = 5,
+                              style = "jenks")
Warning message:
In classIntervals(var = worldmap@data$sales2010, n = 5, style = "jenks") :
  var has missing values, omitted in finding classes

Я также попытался заменить все NA на 0, просто чтобы посмотреть, была ли это проблема NA, и она возвращает мне то же самое предупреждение! Как я могу решить это? Более того, он все равно возвращает карты со значениями зависимой переменной!

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

...