转换纬度和经度

时间:2013-01-16 13:01:19

标签: r

以下数据框表示纬度和经度小数点坐标。我希望使用+和 - 来显示十进制度是北,南,东还是西(在纬度和经度列中)。

因此,如果十进制度为N,则纬度为正。 ...如果十进制度为S,则纬度为负。 ......如果十进制度为E,则经度为正 如果十进制度为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中这样做?任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:5)

使用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()来减少输入的数量。

答案 1 :(得分:0)

非常简单地使用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

答案 2 :(得分:0)

请参阅NMEA转换:http://www.nmea.org/ 但是,您可以在for()方法中逐个获取