2015-03-12 2 views
-1

Я работаю с набором данных ebola, в наборе данных не указаны координаты местоположения. Я хочу вручную назначить долготу и широту местоположению, чтобы я мог отображать местоположения на Google map.I хотите реализовать это в R.Any идее, я пытался, но не работает для меня:Map cordinates to location in R

if(ebola$Country == 'Guinea' & ebola$Location == 'Conakry') 
{ 
conakry <- c(9.5092,13.7122) 
} 
+0

могли бы вы предоставить воспроизводимый пример? см. здесь http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+1

Возможно, было бы лучше использовать другой фрейм данных с 'Country',' Location', 'lat ',' lon', а затем 'merge' или' dplyr :: left_join' их против каскадирования if/else в цикле/apply. – hrbrmstr

ответ

0
#Dataset example 
df <- read.table(text = "Col1 Col2 Location 
1  2  Conkary 
3  1  Monrovia 
2  2  Freetown 
1  3  Greenville", 
       header = TRUE, stringsAsFactors = FALSE) 

#Create a Dataframe with geographic information 
Geo <- read.table(text = "Country Location LON LAT 
Guinea  Conkary 9.5092 -13.7122  
Liberia  Monrovia 6.3000 -10.7659  
    ", 
       header = TRUE, stringsAsFactors = FALSE) 
library(plyr) 
df_Geo <- join(df, Geo, by = "Location", type= "left") 

df_Geo2 <- join(df, Geo, by = "Location", type="right") 

#Create a SpatialPoints Object 
library(sp) 
Coords <- cbind(as.numeric(df_Geo2$LON),as.numeric(df_Geo2$LAT)) 
row.names(Coords) <- 1:nrow(Coords) 
#Choosing the projection, should be good for google maps 
LLCRS <- CRS("+proj=longlat +ellps=WGS84") 
Coords_sp <- SpatialPoints(Coords, proj4string = LLCRS) 

#Create a SpatialPointsDataFrame 
Ebola.sp <- SpatialPointsDataFrame(Coords_sp, df_Geo2, proj4string = LLCRS, match.ID = TRUE) 

#Plot on GoogleMaps 
library(plotGoogleMaps) 
map <- plotGoogleMaps(Ebola.sp, filename='MapEbola.html') 
#Coordinates are inexact due to bad projection.