2014-04-01 4 views
0

각국의 도로 교통 충돌로 인한 사망자 매핑 작업을하고 있습니다. 이 코드를 사용하여 WHO에서 데이터를 가져 왔습니다.gvisGeoChart가 R 데이터 프레임의 잘못된 데이터를 표시합니다.

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"변수에서 왔다고 생각했지만 그게 아닙니다. 어쩌면 국가들이 정확히 일치하지 않을 수 있습니까?

답변

1

열이 모두 FACTOR 변수로 끝납니다 (캐나다는 우연히 126 점). 시도 :

str(colDeathTot) 

이를 극복하기 위해 나는

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

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

을 변경하고 그것을 작동하는 것 같다. 이들은 도로 ​​사망에 대한 절대 숫자이므로 2010 년 중국은 275983 명의 사상자가 발생했다. 이어 인도가 그 뒤를이었다. 숫자를 인구의 크기와 관련 지으면 성명을 향상시키는 것이 좋습니다.

+0

감사합니다. 나는 그것을 알아 내야했다. 예, 인구에 의한 요금입니다. 분석에 더 많은 시간을 할애하기 전에 차트를 작동시키고 싶었습니다. – walkabilly

관련 문제