我在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个观察结果:)它必须是一种方式,我已经搜索但找不到解决方案。
答案 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