0

Saludos de nuevo querida comunidad.

Tengo unas matrices de 3600 filas por 1800 columnas. Lo que estoy haciendo es tomar los datos de dichas matrices y agregarlas a dataframes que voy creando. Los dataframes resultantes tienen la siguiente estructura:

> str(tablas_finales[[30]])
'data.frame':   42 obs. of  6 variables:
$ lat          : num  -19 -19 -19 -19 -19 ...
$ lon          : num  -63 -62.9 -62.8 -62.7 -62.6 ...
$ precipitacion: num  0.35 0.35 0 0 0 ...
$ fechahora    : POSIXct, format: "2014-04-02 02:00:00" "2014-04-02 02:00:00" "2014-04-02 02:00:00" 
...
$ fecha        : chr  "2014-04-02" "2014-04-02" "2014-04-02" "2014-04-02" ...
$ coords       : chr  "-19.05-63.05" "-19.05-62.95" "-19.05-62.85" "-19.05-62.75" ...
> head(tablas_finales[[30]])
     lat    lon precipitacion           fechahora      fecha       coords
1 -19.05 -63.05          0.35 2014-04-02 02:00:00 2014-04-02 -19.05-63.05
2 -19.05 -62.95          0.35 2014-04-02 02:00:00 2014-04-02 -19.05-62.95
3 -19.05 -62.85          0.00 2014-04-02 02:00:00 2014-04-02 -19.05-62.85
4 -19.05 -62.75          0.00 2014-04-02 02:00:00 2014-04-02 -19.05-62.75
5 -19.05 -62.65          0.00 2014-04-02 02:00:00 2014-04-02 -19.05-62.65
6 -19.05 -62.55          0.00 2014-04-02 02:00:00 2014-04-02 -19.05-62.55

tablas_finales[[30]] es uno de los nuevos dataframes que he creado, en el mismo solamente la columna precipitación tiene datos que provienen de las matrices de 3600x1800 que mencione al inicio. Los dataframes nuevos son creados de forma exitosa de acuerdo al propósito. Sin embargo, tengo un problema con la variable lon.

Tanto a la variable lat y a la variable lon las creé de la sigte. forma:

lat.tabla1 = seq(-89.95, by = 0.1, length.out = 1800) 
lon.tabla1 = seq(-179.95, by = 0.1, length.out = 3600) 

Luego los valores fueron agregados al dataframe mediante un bucle for. El problema con la variable lon se evidencia cuando intento lo siguiente:

>tablas_finales[[1]] %>%
       dplyr::filter( lon == -62.75)
>tablas_finales[[1]] %>%
       dplyr::filter(lat == -19.05, lon == -62.75))

Ambos códigos devuelven como resultado "data not available in the table". Por otro lado, esos mismos códigos funcionan de la forma deseada cuando utilizo cualquier otra variable que no sea la de lon. Por ejemplo:

>tablas_finales[[1]] %>%
       dplyr::filter( lat == -19.05)
>tablas_finales[[1]] %>%
       dplyr::filter(lat == -19.05, coords == "-19.05-62.75"))

Lo que me lleva a la conclusion que la variable lon es la que presenta un problema. Pero no he podido identificar cual es el motivo.

> str(tablas_finales[[30]]$lon)
 num [1:42] -63 -62.9 -62.8 -62.7 -62.6 ...
> str(tablas_finales[[30]]$lat)
 num [1:42] -19 -19 -19 -19 -19 ...
> class(tablas_finales[[30]]$lon)
[1] "numeric"
> class(tablas_finales[[30]]$lat)
[1] "numeric"
  • 1
    Prueba: `any(tablas_finales[[1]]$lon == -62.75);any(round(tablas_finales[[1]]$lon, 2) == -62.75)`, ¿que te devuelve? – Patricio Moracho Sep 12 '20 at 01:08
  • Me devuelve ```FALSE``` y ```TRUE``` – Diego Centurión Sep 12 '20 at 01:31
  • 1
    Ahí está el problema, no hay ningún valor de `lon` igual -62.75, tal vez haya alguno tipo -62.7500001, de ahí que no te funcionan los filtros. Es algo raro, por que los datos, supuestamente son generados. Prueba filtrar mediante `dplyr::filter( near(lon, -62.75))`. – Patricio Moracho Sep 12 '20 at 02:07
  • @PatricioMoracho ahora lo entiendo. Ahora revisé mi secuencia ```lon.tabla1 = seq(-179.95, by = 0.1, length.out = 3600)``` y de hecho lo siguiente ```lon.tabla1[1173] == -62.75``` me devuelve ```FALSE```. Pero al hacer ```lon.tabla1[1173]``` me devuelve ```-62.75``` exactamente. De que forma podría ver todos los decimales de este número, hay alguna forma? Yo creí que al crear esta secuencia los números serían exactos, por ejemplo que ese -62.75 sería eso mismo, sin más decimales – Diego Centurión Sep 12 '20 at 03:12
  • 1
    Prueba con esto: `sprintf("%.60f",lon.tabla1[1173])`, también te recomiendo leere esto: https://es.stackoverflow.com/questions/200048/cual-es-la-forma-correcta-de-trabajar-con-n%c3%bameros-de-coma-flotante/200049#200049 – Patricio Moracho Sep 12 '20 at 03:19

0 Answers0