2017-05-17 3 views
1

GPS 좌표가있는 불규칙하고 잘못 생각한 데이터를 다루고 있습니다. 더 유용하고 파이프 연결할 수 있도록해야합니다. Arcminute/Second에서 십진수로 변환 (불규칙한 형식)

나는 내가 여기에있는 angle2dec 기능에 내 작품을 내놓고 봤는데 :
angle2dec <- function(angle) { 
    angle <- as.character(angle) 
    x <- do.call(rbind, strsplit(angle, split=' ')) 

    #decimal points where they should and should not be here 
    #causes my issue as i can't use a consistent string split 
    #character. splitting the first 3 '.' occurrences might work 

    x <- apply(x, 1L, function(y) { 
    y <- as.numeric(y) 
    y[1] + y[2]/60 + y[3]/3600 
    }) 
    return(x) 
} 

그러나 내 데이터가 잘 포맷되지 않았습니다. 다음과 같습니다 좌표 :

ang2dec('53 17 35.852') = 53.29329 

(이 올바른 결과)

은 분명히 문제가의 가난한 선택 :

'53.17.35.852' 

ang2dec 함수는이 형식을 따라야 좌표 작동 좌표의 서식 지정. 누구든지 좌표의 첫 번째 형식을 두 번째 형식으로 변환하거나 내가 찾고있는 기능을 포함하는 ang2dec 함수의 변경을 제안 할 수있는 방법을 제안 할 수 있습니까?

답변

0

적용 함수를 사용하여 원하는 벡터에 전달할 수있는 함수를 만들었습니다. 이것은 현재 형식을 원하는 형식으로 변환하는 데 도움이됩니다.

library(data.table) 
format.fun<-function(x){ 
    y<-as.data.frame(t(as.data.frame(tstrsplit(x, split = "\\.",names = T)))) 
    y<-lapply(y, function(x){ 
    temp<- paste(x[1],x[2],x[3], sep = " ") 
    temp<- paste(temp, x[4], sep = ".") 
    temp 
    }) 
    unlist(y) 
}