我正致力于绘制每个国家道路交通事故造成的死亡情况。我使用此代码从世卫组织提取数据:
library(XML)
col <- "http://apps.who.int/gho/athena/data/GHO/RS_196,RS_198.html?profile=ztable&filter=COUNTRY:*"
col.doc <- htmlParse(col)
col.tabs <- readHTMLTable(col.doc)
colDF <- as.data.frame(col.tabs)
colDF$Country <- colDF$NULL.COUNTRY
colDeathTot <- colDF[seq(1, nrow(colDF), 2), ]
colDeathTot$TotalDeaths <- colDeathTot$NULL.NUMERIC.VALUE
然后我使用&#34; gvisGeoChart映射数据。&#34;
install.packages("googleVis")
library(googleVis)
WorldCollisions <- gvisGeoChart(colDeathTot,
locationvar="NULL.COUNTRY", colorvar="TotalDeaths",
options=list(displayMode="regions"),
chartid="GeoChart_RoadDeaths_World")
plot(WorldCollisions)
问题是地图上的数据不正确。例如对于加拿大,当数据帧为2296时,我在地图上得到126.对此有何想法?我想也许数据来自&#34; row.names&#34;变量,但不是这样。也许这些国家没有正确匹配?
答案 0 :(得分:1)
你的专栏最终都是FACTOR变量(即加拿大巧合126)。尝试:
str(colDeathTot)
为了解决这个问题,我改变了
colDeathTot$TotalDeaths <- colDeathTot$NULL.NUMERIC.VALUE
到
colDeathTot$TotalDeaths <- as.numeric(as.character(colDeathTot$NULL.NUMERIC.VALUE))
它似乎有效。由于这些是道路死亡的绝对数字,中国在2010年造成275983人伤亡,其次是印度。将数字与人口规模相关联是增强声明的好主意。