[R-es] Muestreo de bases de datos

Gilsanz, Jose Luis jluis.gilsanz en tasacionesh.com
Mar Mayo 5 13:12:49 CEST 2015


Hola

Desviándome un poco de la cuestión que plantea Freddy, no estoy muy de acuerdo con lo que comenta acerca de que  "... R no está diseñado (operaciones en la base de datos)..".

Precisamente la mayor parte de mi trabajo en R se realiza vinculadolo a un servidor Microsoft SQL Server y lo cierto es que, hasta ahora, "se entienden" muy bien entre ellos.
Cierto es que, en mi caso, la mayor parte del flujo de datos (con millones de registros como norma general) va de R hacia el SQL, puesto que utilizo R para descargar los datos, organizarlos  y depurarlos antes de subirlos al SQL server.
 Al principio me inquietaba mucho el tiempo (horas en algún caso) en el que la consola de R se mostraba "pensando" hasta que se subían todos los datos al SQL Server, así que  diseñe una función que usando el paquete  snowfall mostraba una barra de progreso mientras se hacia la subida de datos.

Para el flujo de datos en sentido inverso, (de SQL Server a R) siempre me aseguro de que la consulta SQL que "baja" los datos del SQL  Server a un dataframe o similar solo recupera los datos verdaderamente necesarios. Lógicamente y dependiendo de lo que vayas a hacer luego con esos datos a veces esto no es posible, pero en general eso de "bajarse todo" e intentar ejecutar un proceso me parece un hábito bastante pernicioso e improductivo.






> -----Mensaje original-----
> De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de r-
> help-es-request en r-project.org
> Enviado el: martes, 05 de mayo de 2015 12:00
> Para: r-help-es en r-project.org
> Asunto: Resumen de R-help-es, Vol 75, Envío 4
>
> Envíe los mensajes para la lista R-help-es a
>       r-help-es en r-project.org
>
> Para subscribirse o anular su subscripción a través de la WEB
>       https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> O por correo electrónico, enviando un mensaje con el texto "help" en el
> asunto (subject) o en el cuerpo a:
>       r-help-es-request en r-project.org
>
> Puede contactar con el responsable de la lista escribiendo a:
>       r-help-es-owner en r-project.org
>
> Si responde a algún contenido de este mensaje, por favor, edite la linea del
> asunto (subject) para que el texto sea mas especifico que:
> "Re: Contents of R-help-es digest...". Además, por favor, incluya en la
> respuesta sólo aquellas partes del mensaje a las que está respondiendo.
>
>
> Asuntos del día:
>
>    1. Muestreo de bases de datos.- (Freddy Omar López Quintero)
>    2. Re: Muestreo de bases de datos.- (Carlos J. Gil Bellosta )
>    3. Re: Muestreo de bases de datos.- (javier.ruben.marcuzzi en gmail.com)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 4 May 2015 15:15:33 -0300
> From: Freddy Omar López Quintero <freddy.vate01 en gmail.com>
> To: "r-help-es en r-project.org" <r-help-es en r-project.org>
> Subject: [R-es] Muestreo de bases de datos.-
> Message-ID:
>       <CALCOUqu7nKupKdc47Q2ixvsfGVqAdOhgdLmNMfc8JvTS7hqX+Q@
> mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
>
> ¡Hola!
>
> Mi duda surge por la siguiente anécdota: un amigo (empleado de una
> enorme consultora que tiene SAS) migró a R y ansioso me contó que iba a
> ejecutar las rutinas que había traducido de SAS a R y luego de intentar
> ejecutarlas nada le funcionó porque, ingenuamente, quería hacer cosas para
> las cuales R no está diseñado (operaciones en la base de datos) y porque leyó
> TODOS los datos de una consulta (millones de registros) e intentó correr
> algún procedimiento (!). Me dijo que SAS corre todo lo que él necesita y pues
> quedó tristemente decepcionado.
>
> Yo le dije que es corriente tomar una muestra de los datos para calibrar los
> modelos que se van a necesitar y que no es necesario utilizar los millones de
> registros enteros. Esto me hizo pensar ¿existen normas o buenas prácticas
> para el muestreo de las bases de datos?¿existen normativas?¿lineamientos?
> Es claro que mi primera respuesta sería ocupar los métodos ya desarrollados
> para encuestas, pero quién sabe.
>
> Si existen: ¿tienen su contraparte en R?
>
> Gracias y disculpen las molestias.
>
> ¡Salud!
>
> --
> «No soy aquellas sombras tutelares
> que honré con versos que no olvida el tiempo.»
>
> JL Borges
>
>       [[alternative HTML version deleted]]
>
>
>
> ------------------------------
>
> Message: 2
> Date: Mon, 4 May 2015 20:35:28 +0200
> From: "Carlos J. Gil Bellosta " <cgb en datanalytics.com>
> To: Freddy Omar López Quintero <freddy.vate01 en gmail.com>
> Cc: "r-help-es en r-project.org" <r-help-es en r-project.org>
> Subject: Re: [R-es] Muestreo de bases de datos.-
> Message-ID:
>       <CADg83efiwWEdwA6dyR4RUkwB5Qc5evOAmdLfBeg+yO0GngL0Aw
> @mail.gmail.com>
> Content-Type: text/plain; charset=UTF-8
>
> Hola, ¿qué tal?
>
> La mejor manera de muestrear una tabla en una base de datos es a través
> del módulo de algún valor (típicamente autonumérico), como los ids. Si no, a
> través del módulo de un hash de algún identificador similar. Este
> procedimiento tiene la ventaja de ser repetible:
> consultas sucesivas pueden muestrear la misma subpoblación u otra de
> tamaño similar completamente distinta de la anterior. El filtro se hace en el
> where de la consulta a la base de datos (y la sintaxis cambia de una a otra).
>
> Si los datos son grandes y están en una base de datos, es mejor manipularlos
> dentro de ella previamente enviando consultas SQL desde R y solo descargar
> los datos (debidamente filtrados y muestreados, es decir, pequeños y/o
> manejables) al final.
>
> Un saludo,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
>
>
> El día 4 de mayo de 2015, 20:15, Freddy Omar López Quintero
> <freddy.vate01 en gmail.com> escribió:
> > ¡Hola!
> >
> > Mi duda surge por la siguiente anécdota: un amigo (empleado de una
> > enorme consultora que tiene SAS) migró a R y ansioso me contó que iba
> > a ejecutar las rutinas que había traducido de SAS a R y luego de
> > intentar ejecutarlas nada le funcionó porque, ingenuamente, quería
> > hacer cosas para las cuales R no está diseñado (operaciones en la base
> > de datos) y porque leyó TODOS los datos de una consulta (millones de
> > registros) e intentó correr algún procedimiento (!). Me dijo que SAS
> > corre todo lo que él necesita y pues quedó tristemente decepcionado.
> >
> > Yo le dije que es corriente tomar una muestra de los datos para
> > calibrar los modelos que se van a necesitar y que no es necesario
> > utilizar los millones de registros enteros. Esto me hizo pensar
> > ¿existen normas o buenas prácticas para el muestreo de las bases de
> > datos?¿existen normativas?¿lineamientos? Es claro que mi primera
> > respuesta sería ocupar los métodos ya desarrollados para encuestas, pero
> quién sabe.
> >
> > Si existen: ¿tienen su contraparte en R?
> >
> > Gracias y disculpen las molestias.
> >
> > ¡Salud!
> >
> > --
> > «No soy aquellas sombras tutelares
> > que honré con versos que no olvida el tiempo.»
> >
> > JL Borges
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
>
> ------------------------------
>
> Message: 3
> Date: Mon, 4 May 2015 19:32:14 +0000
> From: <javier.ruben.marcuzzi en gmail.com>
> To: "=?utf-8?Q?Carlos_J._Gil_Bellosta?=" <cgb en datanalytics.com>,
>       Freddy López <freddy.vate01 en gmail.com>
> Cc: "=?utf-8?Q?R-help-es en r-project.org?=" <r-help-es en r-project.org>
> Subject: Re: [R-es] Muestreo de bases de datos.-
> Message-ID: <5547cad4.48958c0a.7228.2102 en mx.google.com>
> Content-Type: text/plain; charset="UTF-8"
>
> Estimado Freddy López
>
>
> Yo estoy de acuerdo con Carlos Gil Bellosta, no se si es apropiado para
> millones del registros como los que usted comenta, pero R tiene sqldf, que
> básicamente usa sqlite, esto posibilita usar una base de datos dentro de R sin
> tener que preocuparnos demasiado, otra forma es utilizar data.table en lugar
> de data.frame, dplyr, posiblemente su amigo no migro correctamente de SAS
> a R (aunque tome con cuidado esto último, yo nunca use SAS).
>
>
> Javier Rubén Marcuzzi
>
>
>
>
>
> De: Carlos J. Gil Bellosta
> Enviado el: ?lunes?, ?04? de ?mayo? de ?2015 ?03?:?35? ?p.m.
> Para: Freddy López
> CC: R-help-es en r-project.org
>
>
>
>
>
> Hola, ¿qué tal?
>
> La mejor manera de muestrear una tabla en una base de datos es a través
> del módulo de algún valor (típicamente autonumérico), como los ids. Si no, a
> través del módulo de un hash de algún identificador similar. Este
> procedimiento tiene la ventaja de ser repetible:
> consultas sucesivas pueden muestrear la misma subpoblación u otra de
> tamaño similar completamente distinta de la anterior. El filtro se hace en el
> where de la consulta a la base de datos (y la sintaxis cambia de una a otra).
>
> Si los datos son grandes y están en una base de datos, es mejor manipularlos
> dentro de ella previamente enviando consultas SQL desde R y solo descargar
> los datos (debidamente filtrados y muestreados, es decir, pequeños y/o
> manejables) al final.
>
> Un saludo,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
>
>
> El día 4 de mayo de 2015, 20:15, Freddy Omar López Quintero
> <freddy.vate01 en gmail.com> escribió:
> > ¡Hola!
> >
> > Mi duda surge por la siguiente anécdota: un amigo (empleado de una
> > enorme consultora que tiene SAS) migró a R y ansioso me contó que iba
> > a ejecutar las rutinas que había traducido de SAS a R y luego de
> > intentar ejecutarlas nada le funcionó porque, ingenuamente, quería
> > hacer cosas para las cuales R no está diseñado (operaciones en la base
> > de datos) y porque leyó TODOS los datos de una consulta (millones de
> > registros) e intentó correr algún procedimiento (!). Me dijo que SAS
> > corre todo lo que él necesita y pues quedó tristemente decepcionado.
> >
> > Yo le dije que es corriente tomar una muestra de los datos para
> > calibrar los modelos que se van a necesitar y que no es necesario
> > utilizar los millones de registros enteros. Esto me hizo pensar
> > ¿existen normas o buenas prácticas para el muestreo de las bases de
> > datos?¿existen normativas?¿lineamientos? Es claro que mi primera
> > respuesta sería ocupar los métodos ya desarrollados para encuestas, pero
> quién sabe.
> >
> > Si existen: ¿tienen su contraparte en R?
> >
> > Gracias y disculpen las molestias.
> >
> > ¡Salud!
> >
> > --
> > «No soy aquellas sombras tutelares
> > que honré con versos que no olvida el tiempo.»
> >
> > JL Borges
> >
> >         [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>       [[alternative HTML version deleted]]
>
>
> ------------------------------
>
> Subject: Pié de página del digest
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
> ------------------------------
>
> Fin de Resumen de R-help-es, Vol 75, Envío 4
> ********************************************


Jones Lang LaSalle Arquitectura, SLU
Registration number: B-61888715
Registered Office: Pº de la Castellana, 51 - 5ª ; 28046 Madrid


This e-mail is for the use of the intended recipient(s) only. If you have received this e-mail in error, please notify the sender immediately and then delete it. If you are not the intended recipient, you must not use, disclose or distribute this e-mail without the author's prior permission. We have taken precautions to minimise the risk of transmitting software viruses, but we advise you to carry out your own virus checks on any attachment to this message. We cannot accept liability for any loss or damage caused by software viruses. If you are the intended recipient and you do not wish to receive similar electronic messages from us in future then please respond to the sender to this effect.


Más información sobre la lista de distribución R-help-es