如果值是数字,如何重新计算纬度和小数点到十进制度?

时间:2017-09-15 12:11:10

标签: r coordinates latitude-longitude

我在R.工作 我有一个带lat的df和长读入:

     lat        long
     5542.780  1204.000 
     5540.463  1005.425
     5639.760   958.420
     etc. 

纬度为55度,42.780为十进制分钟。我想用输出将其转换为十进制度:

     lat        long
     55.713    12.06667
     55.67438  10.09042
     56.66267   9.973667
     etc.

我知道这可以通过例如55 + 42.780 / 60 = 55.713。但是我不知道怎么自动为R中的整个df做这个,它有大约79000个观察结果:)它必须是一种方式,我已经搜索但找不到解决方案。

1 个答案:

答案 0 :(得分:1)

我只是实现了帖子中提到的计算,以便在完整的数据框架上进行转换。希望这有帮助!

df <- read.table(text="lat        long
5542.780  1204.000 
5540.463  1005.425
5639.760   958.420", header=T, sep="")
df

df_converted <- sapply(df, function(x) 
  as.numeric(gsub("(.*)(\\d{2}\\.\\d+)", "\\1", formatC(as.numeric(x),format='f',digits=3,flag='0'))) + 
    (as.numeric(gsub("(.*)(\\d{2}\\.\\d+)", "\\2", formatC(as.numeric(x),format='f',digits=3,flag='0')))/ 60))
df_converted

输出是:

          lat      long
[1,] 55.71300 12.066667
[2,] 55.67438 10.090417
[3,] 56.66267  9.973667