gvisGeoChart显示来自R数据帧的错误数据

时间:2014-04-01 23:20:53

标签: r googlevis

我正致力于绘制每个国家道路交通事故造成的死亡情况。我使用此代码从世卫组织提取数据:

    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;变量,但不是这样。也许这些国家没有正确匹配?

1 个答案:

答案 0 :(得分:1)

你的专栏最终都是FACTOR变量(即加拿大巧合126)。尝试:

str(colDeathTot)

为了解决这个问题,我改变了

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

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

它似乎有效。由于这些是道路死亡的绝对数字,中国在2010年造成275983人伤亡,其次是印度。将数字与人口规模相关联是增强声明的好主意。