Estimados, tengo el siguiente problema: Tengo una BD de 19 columnas y aprox 500 mil filas, la que tiene muchas celdas vacias y esta separada con espacios para hacer coincidir los datos bajo los encabezados. Mi problema es que al tratar de importar a R la BD no se como tratar con los espacios vacios cuando se trata de una columna de numeros (para el texto puse na.strings = "NA") y tampoco se como hacer para que al leer cada dato este asociado al encabezado correcto, pues el numero de espacios que esta puesto entre cada dato varia de acuerdo a la extension en caracteres del dato (hay numeros, nombres, etc). Incluso hay encabezados de dos palabras y parece que R los considera dos encabezados distintos. Me explico ? Como puedo hacer para leer la BD correctamente ? Alguna idea ?? Adjunto un archivo de muestra. Muchas gracias. Eric. -- Forest Engineer Master in Environmental and Natural Resource Economics Ph.D. student in Sciences of Natural Resources at La Frontera University Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo. ------------ próxima parte ------------ ID Number Name Fed Sex Tit WTit OTit SRtng SGm SK RRtng RGm Rk BRtng BGm BK B-day Flag 14319110 Van Der Walt, Dina RSA F 0000 w 10218181 (mastar Marine), Asaduzzaman BAN M 1969 13802860 .Sultanov Zhamalidin KGZ M 2008 5700230 A B, Muhammad Yusop MAS M 0000 35077023 A Chakravarthy IND M 1151 0 40 1986 10207538 A E M, Doshtagir BAN M 1840 0 40 1836 0 20 1860 0 20 1974 5716365 A Hamid, Harman MAS M 1593 0 20 0000 10207546 A K M Aminul, Islam BAN M 0000 10217916 A K M Arif, Hossain BAN M 1970 10215727 A K M Jane, Alam BAN M 1969 10207716 A K M Manjurul, Alam BAN M 1964 10206612 A K M, Sourab BAN M 1714 0 40 0000 i 5045886 A K, Kalshyan IND M 1919 0 20 1964 46622110 A Krishna Pranav Reddy IND M 2003 8605360 A La, Teng Hua CHN F 1915 0 40 1993 wi 5716373 A Rajah, Abdul Shukor MAS M 1773 0 40 1996 0 20 0000 5031605 A, Akshaya IND F 2014 0 20 1994 wi 124136061 A, Sergey FID M 1988 5080444 A, Sohita IND F 1447 0 40 1995 wi
Javier Marcuzzi
2015-Apr-19 01:45 UTC
[R-es] Como leer una BD con una estructura inadecuada
Estimado Eric Concha Como usted dice, hay un problema, yo encontré inconvenientes al intentar importar los datos que usted suministro. Pero se me ocurre una pregunta ¿tiene usted acceso a la base de datos original? Porque si tiene acceso hay dos posibilidades, el acceso real donde usted puede (depende que DB) usar la parte de R para esa base de datos en particular, o si tiene acceso pero por medio de otra persona, podría solicitar una consulta sql de acuerdo a sus requerimientos y guardar los datos como a usted le convenga. Otra posibilidad es preguntar si en lugar de un archivo txt puede recibirlo en json, o sql (¿excel?), csv es bueno pero puede ser que se presente algún problema (no es tan "seguro" como los anteriores), pensando en que usted use otra base de datos. Javier Marcuzzi El 18 de abril de 2015, 20:03, eric <ericconchamunoz en gmail.com> escribió:> Estimados, tengo el siguiente problema: > > Tengo una BD de 19 columnas y aprox 500 mil filas, la que tiene muchas > celdas vacias y esta separada con espacios para hacer coincidir los datos > bajo los encabezados. > > Mi problema es que al tratar de importar a R la BD no se como tratar con > los espacios vacios cuando se trata de una columna de numeros (para el > texto puse na.strings = "NA") y tampoco se como hacer para que al leer cada > dato este asociado al encabezado correcto, pues el numero de espacios que > esta puesto entre cada dato varia de acuerdo a la extension en caracteres > del dato (hay numeros, nombres, etc). Incluso hay encabezados de dos > palabras y parece que R los considera dos encabezados distintos. Me explico > ? > > Como puedo hacer para leer la BD correctamente ? Alguna idea ?? > > Adjunto un archivo de muestra. > > Muchas gracias. > > Eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green city > standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con algunos > lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150418/4d041594/attachment.html>
Estimado Javier: Disculpe mi imprecision al hablar de base de datos en este caso, en realidad es un conjunto interesante de datos pero no tiene exactamente estandar de BD .. en fin ... este conjunto de datos lo baje directamente de la pagina de la FIDE, que es la federacion internacional de ajedrez, en http://ratings.fide.com/download.phtml, es decir, estos datos son la BD original. Los datos se ofrecen en formato .txt, que es como yo los baje (70 MB), y en formato XML. que tambien lo baje, pero el archivo pesa alrededor de 180 megas y se vuelve inmanejable con mi modesto portatil. Ni siquiera es posible visualizar los datos. Por esto use el archivo .txt para trate de importarlo en R y tuve los problemas que ya señale. Pense por un momento en que quiza seria posible reemplazar un conjunto de puntos de cualquier largo por un \tab o algo asi, pero al tener casillas vacias se pierde el orden de los datos. Es decir, si un dato corresponde a la ultima columna y todas las anteriores estan vacias, al final de la sustitucion quedara asociado a la primera columna. Al no haber patrones es dificil corregir la estructura del archivo de forma automatica y son demiados datos para intentar siquiera algo a manos. Esa es la situacion mas o menos. Alguna idea ?? Saludos y gracias, Eric. On 18/04/15 22:45, Javier Marcuzzi wrote:> Estimado Eric Concha > > Como usted dice, hay un problema, yo encontré inconvenientes al intentar > importar los datos que usted suministro. Pero se me ocurre una pregunta > ¿tiene usted acceso a la base de datos original? Porque si tiene acceso > hay dos posibilidades, el acceso real donde usted puede (depende que DB) > usar la parte de R para esa base de datos en particular, o si tiene > acceso pero por medio de otra persona, podría solicitar una consulta sql > de acuerdo a sus requerimientos y guardar los datos como a usted le > convenga. Otra posibilidad es preguntar si en lugar de un archivo txt > puede recibirlo en json, o sql (¿excel?), csv es bueno pero puede ser > que se presente algún problema (no es tan "seguro" como los anteriores), > pensando en que usted use otra base de datos. > > Javier Marcuzzi > > El 18 de abril de 2015, 20:03, eric <ericconchamunoz en gmail.com > <mailto:ericconchamunoz en gmail.com>> escribió: > > Estimados, tengo el siguiente problema: > > Tengo una BD de 19 columnas y aprox 500 mil filas, la que tiene > muchas celdas vacias y esta separada con espacios para hacer > coincidir los datos bajo los encabezados. > > Mi problema es que al tratar de importar a R la BD no se como tratar > con los espacios vacios cuando se trata de una columna de numeros > (para el texto puse na.strings = "NA") y tampoco se como hacer para > que al leer cada dato este asociado al encabezado correcto, pues el > numero de espacios que esta puesto entre cada dato varia de acuerdo > a la extension en caracteres del dato (hay numeros, nombres, etc). > Incluso hay encabezados de dos palabras y parece que R los considera > dos encabezados distintos. Me explico ? > > Como puedo hacer para leer la BD correctamente ? Alguna idea ?? > > Adjunto un archivo de muestra. > > Muchas gracias. > > Eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green > city standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con > algunos lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Forest Engineer Master in Environmental and Natural Resource Economics Ph.D. student in Sciences of Natural Resources at La Frontera University Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo.
Jose Luis Brita
2015-Apr-19 08:59 UTC
[R-es] Como leer una BD con una estructura inadecuada
Estimado Eric, Con la función read.fwf() y definiendo la anchura de cada variable como diferencia de las columnas de inicio y final creo que lo lee correctamente. Un saludo Jose Luis ff <- c('C:\\cdb.txt') datos <- read.fwf(ff,widths=c(3-1,15-3,76-16,81-76,85-81,90-85,95-90,110-95,115-110,120-115,123-120,129-123,133-129,136-133,142-136,146-142,149-146,154-149,4), header=FALSE, skip=1, col.names=c('ID', 'Number','Name','Fed','Sex','Tit','WTit','OTit','SRtng','SGm','SK','RRtng','RGm','Rk','BRtng','BGm','BK','B-day','Flag')) El 19 de abril de 2015, 1:03, eric <ericconchamunoz en gmail.com> escribió:> Estimados, tengo el siguiente problema: > > Tengo una BD de 19 columnas y aprox 500 mil filas, la que tiene muchas > celdas vacias y esta separada con espacios para hacer coincidir los datos > bajo los encabezados. > > Mi problema es que al tratar de importar a R la BD no se como tratar con > los espacios vacios cuando se trata de una columna de numeros (para el > texto puse na.strings = "NA") y tampoco se como hacer para que al leer cada > dato este asociado al encabezado correcto, pues el numero de espacios que > esta puesto entre cada dato varia de acuerdo a la extension en caracteres > del dato (hay numeros, nombres, etc). Incluso hay encabezados de dos > palabras y parece que R los considera dos encabezados distintos. Me explico > ? > > Como puedo hacer para leer la BD correctamente ? Alguna idea ?? > > Adjunto un archivo de muestra. > > Muchas gracias. > > Eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green city > standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con algunos > lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Jose Luis ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150419/30938147/attachment.html>
Hola Eric, He probado el nuevo paquete de Hadley Wickham para leer ficheros, como alternativa al read.table() y parece que funciona:> library(readr) > datIn <- read_table("cdb.txt") > head(datIn)ID Number Name Fed Sex Tit WTit OTit SRtng SGm SK RRtng RGm Rk BRtng BGm BK B-day Flag 1 14319110 Van Der Walt, Dina RSA F NA NA NA NA NA NA NA NA NA NA NA NA 0 w 2 10218181 (mastar Marine), Asaduzzaman BAN M NA NA NA NA NA NA NA NA NA NA NA NA 1969 3 13802860 .Sultanov Zhamalidin KGZ M NA NA NA NA NA NA NA NA NA NA NA NA 2008 4 5700230 A B, Muhammad Yusop MAS M NA NA NA NA NA NA NA NA NA NA NA NA 0 5 35077023 A Chakravarthy IND M NA NA NA 1151 0 40 NA NA NA NA NA NA 1986 6 10207538 A E M, Doshtagir BAN M NA NA NA 1840 0 40 1836 0 20 1860 0 20 1974 Saludos, Carlos Ortega www.qualityexcellence.es El 19 de abril de 2015, 1:03, eric <ericconchamunoz en gmail.com> escribió:> Estimados, tengo el siguiente problema: > > Tengo una BD de 19 columnas y aprox 500 mil filas, la que tiene muchas > celdas vacias y esta separada con espacios para hacer coincidir los datos > bajo los encabezados. > > Mi problema es que al tratar de importar a R la BD no se como tratar con > los espacios vacios cuando se trata de una columna de numeros (para el > texto puse na.strings = "NA") y tampoco se como hacer para que al leer cada > dato este asociado al encabezado correcto, pues el numero de espacios que > esta puesto entre cada dato varia de acuerdo a la extension en caracteres > del dato (hay numeros, nombres, etc). Incluso hay encabezados de dos > palabras y parece que R los considera dos encabezados distintos. Me explico > ? > > Como puedo hacer para leer la BD correctamente ? Alguna idea ?? > > Adjunto un archivo de muestra. > > Muchas gracias. > > Eric. > > > > > -- > Forest Engineer > Master in Environmental and Natural Resource Economics > Ph.D. student in Sciences of Natural Resources at La Frontera University > Member in AguaDeTemu2030, citizen movement for Temuco with green city > standards for living > > Nota: Las tildes se han omitido para asegurar compatibilidad con algunos > lectores de correo. > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150419/13465e01/attachment.html>