Estimados, tengo que hacer un calculo muy simple, pero con una BD mas o menos grande (250mil filas x 500 columnas) ... esta BD esta en formato de SPSS y la importo asi: library(foreign) bdr <- read.spss("CASEN_2013_MN_B_Principal.sav", use.value.labels=FALSE, to.data.frame=TRUE) luego, quiero transformar el DF en un data.tale pues el calculo requiere obtener promedios de acuerdo a ciertos criterios, lo que es muy facil especificar con DT y el calculo es bastante rapido tambien ... pero al tratar de transformar bdr a data.table bdr <- as.data.table(bdr) me transforma las columnas con los datos numericos que debo usar, en characteres, y al tratar de volverlas a datos numericos con as.numeric() me reemplaza todos los datos con NA que estoy haciendo mal ? adjunto algunas filas del archivo, 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 ------------ A non-text attachment was scrubbed... Name: bdr1a20.csv Type: text/csv Size: 32677 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20160229/4c6e4b88/attachment-0001.bin>
Ruben Bermad
2016-Feb-29 19:22 UTC
[R-es] problema al importar una BD que esta en formato de SPSS
Hola Eric, Lo mas probable es que tengas algun registro que no sea numerico, y te este modificando la clase de la columna.Haz un chequeo rapido con unique() o con levels(). Al tener tantos registros si es un caracter deberia de aparecerte al principio o al final de unique() por lo que puedes probar a buscarlo ordenando el resultado de unique() de mayor a menor y de menor a mayor. Asi lo veras rapidamente. Si se te ha transformado en factor lo que tienes que hacer es eliminar ese error (asumo que solo deberia haber registros numericos), y transformarlo en numerico mediante: " as.numeric(levels(columna))[columna]". Si no tienes ningun registro raro y no numerico prueba a transformar la columan con as.integer() directamente. A ver si eso te funciona From: ericconchamunoz en gmail.com To: r-help-es en r-project.org Date: Mon, 29 Feb 2016 14:50:27 -0300 Subject: [R-es] problema al importar una BD que esta en formato de SPSS Estimados, tengo que hacer un calculo muy simple, pero con una BD mas o menos grande (250mil filas x 500 columnas) ... esta BD esta en formato de SPSS y la importo asi: library(foreign) bdr <- read.spss("CASEN_2013_MN_B_Principal.sav", use.value.labels=FALSE, to.data.frame=TRUE) luego, quiero transformar el DF en un data.tale pues el calculo requiere obtener promedios de acuerdo a ciertos criterios, lo que es muy facil especificar con DT y el calculo es bastante rapido tambien ... pero al tratar de transformar bdr a data.table bdr <- as.data.table(bdr) me transforma las columnas con los datos numericos que debo usar, en characteres, y al tratar de volverlas a datos numericos con as.numeric() me reemplaza todos los datos con NA que estoy haciendo mal ? adjunto algunas filas del archivo, 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 [[alternative HTML version deleted]]
Estimados, gracias por sus sugerencias .... no estoy seguro de las razones del problema al importar a R la BD en formato spss, pero por la solucion que encontre, parece que fuera un problema de los importadores (probe importando con todos los paquetes que aparecen mencionados en el la internet) ... al final el problema se resolvio instalando PSPP (en Debian/linux) y usando la utilidad pspp-convert para transformar el archivo *.sav en *.csv y luego lei eso sin problemas en R. (nunca entre en PSPP por si acaso, no lei el archivo y luego lo exporte, si no que lo transfore directamente en .csv) Eso, por si a alguien le sirve. Muchas gracias, Eric. On 02/29/2016 04:22 PM, Ruben Bermad wrote:> Hola Eric, > > Lo mas probable es que tengas algun registro que no sea numerico, y te > este modificando la clase de la columna. > Haz un chequeo rapido con unique() o con levels(). Al tener tantos > registros si es un caracter deberia de aparecerte al principio o al > final de unique() por lo que puedes probar a buscarlo ordenando el > resultado de unique() de mayor a menor y de menor a mayor. Asi lo veras > rapidamente. > > Si se te ha transformado en factor lo que tienes que hacer es eliminar > ese error (asumo que solo deberia haber registros numericos), y > transformarlo en numerico mediante: " as.numeric(levels(columna))[columna]". > > Si no tienes ningun registro raro y no numerico prueba a transformar la > columan con as.integer() directamente. > > A ver si eso te funciona > > > > From: ericconchamunoz en gmail.com > To: r-help-es en r-project.org > Date: Mon, 29 Feb 2016 14:50:27 -0300 > Subject: [R-es] problema al importar una BD que esta en formato de SPSS > > Estimados, tengo que hacer un calculo muy simple, pero con una BD mas o > menos grande (250mil filas x 500 columnas) ... esta BD esta en formato > de SPSS y la importo asi: > > library(foreign) > bdr <- read.spss("CASEN_2013_MN_B_Principal.sav", > use.value.labels=FALSE, to.data.frame=TRUE) > > > luego, quiero transformar el DF en un data.tale pues el calculo requiere > obtener promedios de acuerdo a ciertos criterios, lo que es muy facil > especificar con DT y el calculo es bastante rapido tambien ... > > pero al tratar de transformar bdr a data.table > > bdr <- as.data.table(bdr) > > > me transforma las columnas con los datos numericos que debo usar, en > characteres, y al tratar de volverlas a datos numericos con as.numeric() > me reemplaza todos los datos con NA > > > que estoy haciendo mal ? > > adjunto algunas filas del archivo, 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-- 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.
Javier Marcuzzi
2016-Mar-03 05:36 UTC
[R-es] problema al importar una BD que esta en formato de SPSS
Estimado Eric Recién veo este sitio, nunca importe SPSS, no puedo compartir experiencia al respecto más que enviarle el link por si lo cree útil. https://github.com/hadley/haven Javier Rubén Marcuzzi De: eric Enviado: lunes, 29 de febrero de 2016 14:51 Para: Lista R Asunto: [R-es] problema al importar una BD que esta en formato de SPSS Estimados, tengo que hacer un calculo muy simple, pero con una BD mas o menos grande (250mil filas x 500 columnas) ... esta BD esta en formato de SPSS y la importo asi: library(foreign) bdr <- read.spss("CASEN_2013_MN_B_Principal.sav", use.value.labels=FALSE, to.data.frame=TRUE) luego, quiero transformar el DF en un data.tale pues el calculo requiere obtener promedios de acuerdo a ciertos criterios, lo que es muy facil especificar con DT y el calculo es bastante rapido tambien ... pero al tratar de transformar bdr a data.table bdr <- as.data.table(bdr) me transforma las columnas con los datos numericos que debo usar, en characteres, y al tratar de volverlas a datos numericos con as.numeric() me reemplaza todos los datos con NA que estoy haciendo mal ? adjunto algunas filas del archivo, 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. [[alternative HTML version deleted]]
Perfecto, muchas gracias Javier. Saludos, Eric. On 03/03/2016 02:36 AM, Javier Marcuzzi wrote:> Estimado Eric > > Recién veo este sitio, nunca importe SPSS, no puedo compartir > experiencia al respecto más que enviarle el link por si lo cree útil. > > https://github.com/hadley/haven > > Javier Rubén Marcuzzi > > *De: *eric <mailto:ericconchamunoz en gmail.com> > *Enviado: *lunes, 29 de febrero de 2016 14:51 > *Para: *Lista R <mailto:r-help-es en r-project.org> > *Asunto: *[R-es] problema al importar una BD que esta en formato de SPSS > > Estimados, tengo que hacer un calculo muy simple, pero con una BD mas o > > menos grande (250mil filas x 500 columnas) ... esta BD esta en formato > > de SPSS y la importo asi: > > library(foreign) > > bdr <- read.spss("CASEN_2013_MN_B_Principal.sav", > > use.value.labels=FALSE, to.data.frame=TRUE) > > luego, quiero transformar el DF en un data.tale pues el calculo requiere > > obtener promedios de acuerdo a ciertos criterios, lo que es muy facil > > especificar con DT y el calculo es bastante rapido tambien ... > > pero al tratar de transformar bdr a data.table > > bdr <- as.data.table(bdr) > > me transforma las columnas con los datos numericos que debo usar, en > > characteres, y al tratar de volverlas a datos numericos con as.numeric() > > me reemplaza todos los datos con NA > > que estoy haciendo mal ? > > adjunto algunas filas del archivo, 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. >-- 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.