Discussion:
[R-es] Bases de datos, comas y puntos.-
unknown
2011-05-25 14:31:11 UTC
Permalink
Estimados compañeros,

Les contaré mi problema: supongamos que tengo millones de datos en un
manejador famoso de base de datos al cual, por restricciones impuestas
desde la alta gerencia, no puedo modificar en un ápice. Este manejador
utiliza siempre (siempre) comas en lugar de puntos para separar
decimales. Yo trabajo con R (naturalmente) y hago mis consultas a la
base de datos utilizando la función dbGetQuery (de la librería DBI).
select var1 from tabla; -- muestra los datos: notar las comas
1,1
1,0
...
select avg(var1) from tabla; -- muestra la media de var1: notar la coma
1,115
pero, dentro de R, una vez hecha la conexión, R lo interpreta como
caracteres y no puedo hacer mucho con esto.

¿Existirá alguna manera que ustedes sepan para hacer el dbGetQuery de
forma tal que las comas sean interpretadas como puntos decimales (de
forma semejante a como lo hace read.table() con dec?

Muchas gracias a todos.

Salud.

--
«But Gwindor answered: 'The doom lies in yourself, not in your name.'»

JRR Tolkien
unknown
2011-05-25 15:00:19 UTC
Permalink
Hola, ¿qué tal?

Yo suelo utilizar RODBC y el comando análogo, sqlQuery, tiene la
opción "dec" para indicar que la coma es el separador de decimales. La
función dbGetQuery admite como parámetro "...". Es probable que admita
un comando equivalente.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com
unknown
2011-05-25 19:04:20 UTC
Permalink
No se que base de datos, RODBC puede ser útil, pero una pregunta

¿Cuántos MB o GB tiene la base de datos?

Porque una alternativa puede ser realizar una consulta entre las tablas o
copiar toda la base de datos, y comienza a trabajar con este resultado con
el motor de base de datos que más de agrade o cómodo se sienta usted para su
trabajo.

MySQL o las libres no tienen problema de tamaño, SQLserver R2 permite usar
en forma libra hasta 10GB.

-----Mensaje original-----
From: Freddy López
Sent: Wednesday, May 25, 2011 11:31 AM
To: r-help-es en r-project.org
Subject: [R-es] Bases de datos, comas y puntos.-

Estimados compañeros,

Les contaré mi problema: supongamos que tengo millones de datos en un
manejador famoso de base de datos al cual, por restricciones impuestas
desde la alta gerencia, no puedo modificar en un ápice. Este manejador
utiliza siempre (siempre) comas en lugar de puntos para separar
decimales. Yo trabajo con R (naturalmente) y hago mis consultas a la
base de datos utilizando la función dbGetQuery (de la librería DBI).
select var1 from tabla; -- muestra los datos: notar las comas
1,1
1,0
...
select avg(var1) from tabla; -- muestra la media de var1: notar la coma
1,115
pero, dentro de R, una vez hecha la conexión, R lo interpreta como
caracteres y no puedo hacer mucho con esto.

¿Existirá alguna manera que ustedes sepan para hacer el dbGetQuery de
forma tal que las comas sean interpretadas como puntos decimales (de
forma semejante a como lo hace read.table() con dec?

Muchas gracias a todos.

Salud.

--
«But Gwindor answered: 'The doom lies in yourself, not in your name.'»

JRR Tolkien
unknown
2011-05-25 19:04:09 UTC
Permalink
An embedded and charset-unspecified text was scrubbed...
Name: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20110525/bbc23fbe/attachment.pl>
unknown
2011-05-30 12:25:46 UTC
Permalink
Gracias Luciano, Carlos Gil, Javier y Carlos Ortega.

Experimenté todo lo que pude con todas vuestras sugerencias pero me
fue totalmente imposible hacerlo funcional.

La solución de Luciano la conocía, pero para hacerlo con cada variable
numérica de cada tabla implicaba mucho tiempo invertido.

La solución de Carlos J. GIl nunca me funcionó a cabalidad.
Efectivamente sqlQuery, de RODBC, me mostraba los datos al menos como
numeric en R (a diferencia de dbGetQuery que los traía como character)
pero ¡sin decimales! Si en la tabla original había uno valor 12,29,
luego de hacer la conexión, R lo tomaba como 12 solamente. La opción
dec no reportaba mayor diferencia

Dentro de la base de datos no hay problemas, estimado Javier. Es al
momento de trabajar los datos por medio de una conexión. El tamaño es
de varios gigas.

La sugerencia de Carlos Ortega es semejante a la de don Luciano y le
huí por lo tarda.

Moraleja: no pude corregirlo de una forma... elegante. Mi solución fue
exportar las tablas a archivos planos para quitarles las comas con un
editor (lo que conllevó a otro problema: ¿un editor para archivos
planos enormes, verdaderamente enormes, que funcione decentemente?:
solución privativa: UltraEdit) y luego volverlas a importar y así me
funcionó todo luego a las mil maravillas.

Gracias a todos.

2011/5/25 Carlos Ortega <coforfe en gmail.com>
Hola,
Mientras encuentras el campo específico del driver (es una opción contemplada en las funciones de extracción del paquete DBI, como "...") de tu base de datos que te permite modificar las comas por puntos puedes optar por: a) modificar la coma por el punto vía gsub() y b) transformar el tipo de la columna/s modificadas de caracter a numérico vía "as.numeric()".
Saludos,
Carlos Ortega
www.qualityexcellence.es
http://qualityexcellence.wordpress.com/ (Blog)
2011/5/25 Freddy López <freddy.vate01 en gmail.com>
Post by unknown
Estimados compañeros,
Les contaré mi problema: supongamos que tengo millones de datos en un
manejador famoso de base de datos al cual, por restricciones impuestas
desde la alta gerencia, no puedo modificar en un ápice. Este manejador
utiliza siempre (siempre) comas en lugar de puntos para separar
decimales. Yo trabajo con R (naturalmente) y hago mis consultas a la
base de datos utilizando la función dbGetQuery (de la librería DBI).
select var1 from tabla; -- muestra los datos: notar las comas
1,1
1,0
...
select avg(var1) from tabla; -- muestra la media de var1: notar la coma
1,115
pero, dentro de R, una vez hecha la conexión, R lo interpreta como
caracteres y no puedo hacer mucho con esto.
¿Existirá alguna manera que ustedes sepan para hacer el dbGetQuery de
forma tal que las comas sean interpretadas como puntos decimales (de
forma semejante a como lo hace read.table() con dec?
Muchas gracias a todos.
Salud.
--
«But Gwindor answered: 'The doom lies in yourself, not in your name.'»
JRR Tolkien
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
--
«But Gwindor answered: 'The doom lies in yourself, not in your name.'»

JRR Tolkien
unknown
2011-05-30 12:37:57 UTC
Permalink
Hola Freddy.

Si tus ficheros son de texto plano, cambiar las comas por puntos (o viceversa) es muy sencillo con algún soft parecido al Search&Replace o Replace Studio Pro (de Funduc) o el "Buscar y Reemplazar" de El Guille (http://www.elguille.info/vb/utilidades/GSBYR2.HTM) más sencillo pero freeware. Así podrás sustituir los caracteres que necesites en un fichero o grupo de ficheros o carpetas sin tener que abrirlos ni convertirlos.

Igual, como solución colateral, te apaña.

Un Saludo,
Miguel.



-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de Freddy López
Enviado el: lunes, 30 de mayo de 2011 14:26
CC: r-help-es en r-project.org
Asunto: Re: [R-es] Bases de datos, comas y puntos.-

Gracias Luciano, Carlos Gil, Javier y Carlos Ortega.

Experimenté todo lo que pude con todas vuestras sugerencias pero me fue totalmente imposible hacerlo funcional.

La solución de Luciano la conocía, pero para hacerlo con cada variable numérica de cada tabla implicaba mucho tiempo invertido.

La solución de Carlos J. GIl nunca me funcionó a cabalidad.
Efectivamente sqlQuery, de RODBC, me mostraba los datos al menos como numeric en R (a diferencia de dbGetQuery que los traía como character) pero ¡sin decimales! Si en la tabla original había uno valor 12,29, luego de hacer la conexión, R lo tomaba como 12 solamente. La opción dec no reportaba mayor diferencia

Dentro de la base de datos no hay problemas, estimado Javier. Es al momento de trabajar los datos por medio de una conexión. El tamaño es de varios gigas.

La sugerencia de Carlos Ortega es semejante a la de don Luciano y le huí por lo tarda.

Moraleja: no pude corregirlo de una forma... elegante. Mi solución fue exportar las tablas a archivos planos para quitarles las comas con un editor (lo que conllevó a otro problema: ¿un editor para archivos planos enormes, verdaderamente enormes, que funcione decentemente?:
solución privativa: UltraEdit) y luego volverlas a importar y así me funcionó todo luego a las mil maravillas.

Gracias a todos.


Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.

Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.

See more languages: http://www.sergas.es/aviso_confidencialidad.htm
Loading...