2017-09-15 6 views
0

私は緯度とDFを持っており、長いようで読みR. で働いています:数値が数値の場合、緯度と小数点以下の桁数を10進数に再計算する方法は?

緯度は55度で、42.780は小数点分です
 lat  long 
    5542.780 1204.000 
    5540.463 1005.425 
    5639.760 958.420 
    etc. 

。出力を使ってこれを小数点以下に変換したい:

 lat  long 
    55.713 12.06667 
    55.67438 10.09042 
    56.66267 9.973667 
    etc. 

これは、たとえば次のように計算できます。 55 + 42.780/60 = 55.713。しかし、Rの中のdf全体について自動的に行う方法はわかりません。これは約79,000の観測値を持っています。それは方法でなければなりません。私は検索しましたが、解決策を見つけることができません。

+1

可能な重複(https://stackoverflow.com/questions/14404596/converting-geo-coordinates-from-degree 10進数) – amonk

+0

https://stackoverflow.com/questions/14404596/converting-geo-coordinates-from-degree-to-decimal – amonk

+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 

出力された:【10進する度から地理座標を変換]の

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

@ E.ThereseHarvey plsがあなたの問題を解決した場合、[正しい答えとしてマークする](https://stackoverflow.com/help/someone-answers)を忘れないでください:) – Prem

+0

それは素晴らしい作品です!どうもありがとうございました!度数の1桁または2桁の値を調整する必要があったため、それは本当に難しいものでした。また、今度は正しいとマークされ、 –

関連する問題