Ajustar dados de latitude e longitude

Oi gente, eu tenho um pesadelo.

Preciso fazer umas análises dependentes da latitude, mas descobri que a minha base de dados tá assim:

A tibble: 70,447 x 2
LATITUDE LONGITUDE

1 489.174.224 -686.275.291
2 491.000.000 -1.231.850.000
3 470.773.411 -708.055.544
4 492.213.299 -1.232.110.997
5 491.000.000 -1.231.850.000
6 491.000.000 -1.231.850.000
7 432.994.004 -798.015.118
8 492.213.299 -1.232.110.997
9 492.213.299 -1.232.110.997
10 439.347.222 -783.763.889

… with 70,437 more rows

Ou seja, a pontuação tá toda errada. A primeira linha, por exemplo, tinha que ser lat = 48. 917422 e long = -68.627529 (latitude não pode passar de 180 e longitude de 360, e depois do ponto tem que ter até 6 dígitos). Existe salvação???

library(tidyverse)
    
    dados <- tribble(
        ~LATITUDE, ~LONGITUDE,
        "489.174.224", "-686.275.291",
        "491.000.000", "-1.231.850.000",
        "470.773.411", "-708.055.544",
        "492.213.299", "-1.232.110.997"
    )
    
    arruma_coord <- function(coords) {
        coords <- coords %>%
            str_replace_all("\\.", "") %>% # troca os pontos por nada
            as.numeric() # converte o texto em numeric
        
        # retorna os valores divididos por 10 milhoes e arredonda na sexta casa decimal
        round(coords/1e7, 6) 
    }
    
    dados %>%
        mutate(
            latitude = arruma_coord(LATITUDE),
            longitude = arruma_coord(LONGITUDE)
        )
#> # A tibble: 4 x 4
#>   LATITUDE    LONGITUDE      latitude longitude
#>   <chr>       <chr>             <dbl>     <dbl>
#> 1 489.174.224 -686.275.291       48.9     -68.6
#> 2 491.000.000 -1.231.850.000     49.1    -123. 
#> 3 470.773.411 -708.055.544       47.1     -70.8
#> 4 492.213.299 -1.232.110.997     49.2    -123.

Created on 2020-06-14 by the reprex package (v0.3.0)

1 curtida

athos, ficou lindíssimo, mt obgd!!