我正在使用GPS坐标处理一些不规则且经过深思熟虑的数据,我需要让它们更具可用性和可管理性。
我的工作基于我在这里找到的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)
}
但是我的数据格式不正确。坐标如下所示:
'53.17.35.852'
ang2dec函数适用于遵循以下格式的坐标:
ang2dec('53 17 35.852') = 53.29329
(这是正确的结果)
显然问题是坐标格式的选择不当。任何人都可以提出一种方法,我可以将第一种坐标格式转换为第二种格式,或者建议对包含我正在寻找的功能的ang2dec函数进行更改吗?
答案 0 :(得分:0)
我创建了一个函数,你可以使用apply函数将它传递给你想要的向量。 这将帮助您将当前格式格式化为所需格式。
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)
}