Я хочу сделать карту с людьми, инфицированными коронавирусом, в США. Таким образом, идея состоит в том, чтобы визуализировать карту со всеми штатами США и увидеть диапазон зараженных людей (то есть 500-2000 и т. Д. c) на всей карте. Это должно быть представлено разными оттенками одного цвета. Темные оттенки были бы состояниями с большим количеством случаев коронавируса (состояний).
Так вот мой код:
install.packages("sp")
library(sp)
install.packages("sf")
library(sf)
install.packages("maptools")
library(maptools)
install.packages("spdep")
library(spdep)
install.packages("rgdal")
library(rgdal)
install.packages("RColorBrewer")
library(RColorBrewer)
install.packages("readxl")
library(readxl)
#
shp_usa <- readOGR("USA_States.shp")
names(shp_usa)
shp_usa@data
#
infected <- read_excel("C:/Users/josem/OneDrive/Escritorio/infectedUS/CasesUS.xlsx")
names(infected)
usa_infected <- shp_usa
usa_infected <- merge(x= shp_usa@data,y= infected,by.x= "STATE_NAME",by.y="State",all.x = TRUE,sort = FALSE)
summary(usa_infected)
# Map Cases by state USA
spplot(usa_infected[usa_infected@Cases > 0, ],"Cases.x", at = quantile(usa_infected$Cases.x, p = c(0, .25, .5, .75, 1), na.rm = TRUE), col.regions = brewer.pal(5, "Reds"), main = expression("Cases by State"))
Но у меня есть две проблемы: 1. Я не знаю что именно написать в этой части кода: by.x =? by.y =? чтобы выполнить задание.
usa_infected <- merge(shp_usa@data,infected,by.x= "STATE_NAME",by.y="State",all.x = TRUE,sort = FALSE)
Для визуализации карты у меня есть этот код
spplot(usa_infected[usa_infected@Cases > 0, ],"Cases.y", at = quantile(usa_infected$Cases.y, p = c(0, .25, .5, .75, 1), na.rm = TRUE), col.regions = brewer.pal(5, "Reds"), main = expression("Cases by State"))
Но после запуска кода я получил это сообщение:
Error in `[.data.frame`(usa_infected, usa_infected@Cases > 0, ) :
trying to get slot "Cases" from an object (class "data.frame") that is not an S4 object
У меня есть 2 набора данных: 1 - Это из файла shp из США.
structure(list(STATE_NAME = structure(c(48L, 42L, 51L, 50L, 46L,
24L, 38L, 30L, 16L, 22L, 28L, 33L, 39L, 7L, 40L, 31L, 15L, 29L,
45L, 5L, 36L, 14L, 9L, 21L, 6L, 18L, 17L, 47L, 26L, 3L, 37L,
34L, 43L, 44L, 25L, 11L, 41L, 4L, 19L, 10L, 23L, 12L, 1L, 27L,
20L, 35L, 8L, 13L, 2L, 49L, 32L), .Label = c("Alabama", "Alaska",
"Arizona", "Arkansas", "California", "Colorado", "Connecticut",
"Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii",
"Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky",
"Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan",
"Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska",
"Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York",
"North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon",
"Pennsylvania", "Rhode Island", "South Carolina", "South Dakota",
"Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington",
"West Virginia", "Wisconsin", "Wyoming"), class = "factor"),
STATE_FIPS = structure(c(48L, 42L, 51L, 50L, 46L, 24L, 38L,
30L, 16L, 22L, 28L, 33L, 39L, 7L, 40L, 31L, 15L, 29L, 45L,
5L, 36L, 14L, 9L, 21L, 6L, 18L, 17L, 47L, 26L, 3L, 37L, 34L,
43L, 44L, 25L, 11L, 41L, 4L, 19L, 10L, 23L, 12L, 1L, 27L,
20L, 35L, 8L, 13L, 2L, 49L, 32L), .Label = c("01", "02",
"04", "05", "06", "08", "09", "10", "11", "12", "13", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25",
"26", "27", "28", "29", "30", "31", "32", "33", "34", "35",
"36", "37", "38", "39", "40", "41", "42", "44", "45", "46",
"47", "48", "49", "50", "51", "53", "54", "55", "56"), class = "factor"),
STATE_ABBR = structure(c(48L, 42L, 51L, 49L, 47L, 24L, 38L,
31L, 13L, 20L, 30L, 35L, 39L, 7L, 40L, 32L, 16L, 34L, 45L,
5L, 36L, 15L, 8L, 21L, 6L, 18L, 17L, 46L, 25L, 4L, 37L, 28L,
43L, 44L, 26L, 11L, 41L, 3L, 19L, 10L, 23L, 12L, 2L, 27L,
22L, 29L, 9L, 14L, 1L, 50L, 33L), .Label = c("AK", "AL",
"AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "HI",
"IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME",
"MI", "MN", "MO", "MS", "MT", "NC", "ND", "NE", "NH", "NJ",
"NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI", "SC", "SD",
"TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY"), class = "factor"),
Cases = c(364, 8, 1, 6, 1, 5, 21, 5, 13, 95, 10, 216, 16,
3, 5, 15, 6, 7, 2, 157, 4, 19, 10, 9, 33, 8, 1, 9, 1, 6,
2, 7, 9, 21, 1, 22, 9, 1, 13, 26, 2, 2, NA, NA, NA, NA, NA,
NA, NA, NA, NA)), class = "data.frame", row.names = c(NA,
-51L))
2 - А это база данных для зараженных:
structure(list(State = c("Arizona", "Wyoming", "Arkansas", "California",
"Colorado", "Connecticut", "District of Columbia", "Florida",
"Georgia", "Hawaii", "Illinois", "Indiana", "Iowa", "Kansas",
"Kentucky", "Louisiana", "Maryland", "Massachusetts", "Michigan",
"Minnesota", "Mississippi", "Missouri", "Nebraska", "Nevada",
"New Hampshire", "New Jersey", "New York", "North Carolina",
"Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island",
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah",
"Vermont", "Virginia", "Washington", "Wisconsin"), Cases = c(6,
1, 1, 157, 33, 3, 10, 26, 22, 2, 19, 6, 13, 1, 8, 13, 9, 95, strong text
2, 5, 1, 1, 10, 7, 5, 15, 216, 7, 4, 2, 21, 16, 5, 9, 8, 9, 21,
2, 1, 9, 364, 6)), row.names = c(NA, -42L), class = c("tbl_df",
"tbl", "data.frame"))