4

次のデータ フレームは、緯度と経度の 10 進座標を表します。+ と - を使用して、10 進度が北、南、東、西のいずれであるか (緯度と経度の列) を示したいと考えています。

したがって、10 進度が N の場合、緯度は正になります。 ... 10 進度が S の場合、緯度は負になります。 ... 10 進度が E の場合、経度は正になり、 10 進度は 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でこれを行うにはどうすればよいですか?アドバイスをいただければ幸いです。

4

3 に答える 3

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()タイピングの量を減らすために使用します。

于 2013-01-16T13:07:48.747 に答える
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
于 2013-01-16T13:07:37.780 に答える
0

NMEA変換:http ://www.nmea.org/を参照してください。 ただし、for()メソッドで実行して、1つずつ位置を取得できます。

于 2013-01-16T13:08:02.747 に答える