【发布时间】:2020-06-24 04:25:22
【问题描述】:
我想制作一张美国各州冠状病毒感染者的地图。因此,我们的想法是可视化包含美国所有州的地图,并在所有地图中查看一系列感染者(即 500-2000 等)。这应该由一种颜色的不同深浅来表示。深色部分是冠状病毒病例较多的州。
这是我的代码:
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
我有这两个数据集: 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"))
【问题讨论】:
标签: r