0

我正在绘制每个国家/地区因道路交通事故造成的死亡人数。我使用以下代码从 WHO 提取数据:

    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

然后我使用“gvisGeoChart”映射数据。

    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。对此有什么想法吗?我想也许数据来自“row.names”变量,但事实并非如此。也许这些国家没有正确匹配?

4

1 回答 1

1

您的列都最终成为 FACTOR 变量(即巧合的是,加拿大是 126)。尝试:

str(colDeathTot)

为了克服这个我改变了

colDeathTot$TotalDeaths <- colDeathTot$NULL.NUMERIC.VALUE

colDeathTot$TotalDeaths <- as.numeric(as.character(colDeathTot$NULL.NUMERIC.VALUE))

它似乎工作。由于这些是道路死亡的绝对数字,中国在 2010 年的伤亡人数为 275983 人,其次是印度。将这些数字与人口规模联系起来将是一个加强陈述的好主意。

于 2014-04-16T06:51:38.693 回答