转换经度和纬度

问题描述:

以下数据框表示经纬度的小数坐标。我希望使用+和 - 来显示小数度是北,南,东或西(在经纬度列中)。转换经度和纬度

所以,纬度将是正面的,如果小数点度为N. ...纬度将是负面的,如果十进制度分别为S. ...经度将是正面的,如果小数度是Ë 和如果十进制度数为W,则经度为负。

a <- c(1:3) 
Lat <- c(54.5, 55.2, 10.1) 
NS <- c("N","N","S") 
Long <- c(1.2, 0.5, 1.3) 
EW <- c("W","E","W") 
df1 <- data.frame(a,Lat,NS,Long,EW) 

我该如何在R中执行此操作?任何意见将不胜感激。

+0

参见:http://*.com/q/13192030/269476 – James

使用ifelse

df1 <- within(df1, { 
      Lat <- ifelse(NS=="N", Lat, -Lat) 
      Long <- ifelse(EW=="E", Long, -Long) 
}) 

df1 
    a Lat NS Long EW 
1 1 54.5 N -1.2 W 
2 2 55.2 N 0.5 E 
3 3 -10.1 S -1.3 W 

我用within()减少键入量。

很简单与ifelse

df2 <- data.frame(a=df1$a, Lat=ifelse(df1$NS=="N", df1$Lat, -1*df1$Lat), 
          Long=ifelse(df1$EW=="E", df1$Long, -1*df1$Long)) 

df2 
    a Lat Long 
1 1 54.5 -1.2 
2 2 55.2 0.5 
3 3 -10.1 -1.3 

见NMEA转换:http://www.nmea.org/ 但是,你可以做一个对()方法来获得一个由一个位置