2013-01-16 5 views
4

다음 데이터 프레임은 위도 및 경도 십진수 좌표를 나타냅니다. 나는 위도와 경도 열에 십진수가 북쪽, 남쪽, 동쪽 또는 서쪽인지 여부를 표시하기 위해 +와 -를 사용하고 싶다. 소수 도의 소수 도의 S. 라면 N. ...을 찾기 부정적인 것 인 경우위도 및 경도 변환

그래서, 위도 긍정적 것이 소수 도의 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에서 어떻게 수행합니까? 모든 조언을 많이 주시면 감사하겠습니다.

+0

페이지의 위치 하나 : http://stackoverflow.com/q/13192030/269476 – James

답변

4

사용 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 
I는 입력의 양을 줄이기 위해 within()를 사용합니다.

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