Tenía la versión data.table 1.9.6.- Actualicé a la data.table 1.10.0 y funcionó tal cual lo indicás. Muchas gracias. ?Para eliminar las " adicionales estoy usando: library(stringr) library(plyr) datos$d_nomenclador <- str_replace(datos$d_nomenclador, pattern='\\","', replacement="") datos$nomenclador_descripcion<- str_replace(datos$nomenclador_descripcion, pattern='\\","', replacement="") Pero elimina las del principio y sigo con problemas con las del final, como si no las reconociera (debería: en el Excel cuando corro el reemplazar " por [nada] elimina todas. Las dos variables son chr. head(datos) d_nomenclador baja_nomenclador nomenclador_descripcion nomenclador_asociado 1: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" "20" 2: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" "20" 3: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" "20" 4: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" "20" 5: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" "20" 6: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" "20" El 19 de enero de 2017, 4:25, Carlos Ortega <cof en qualityexcellence.es> escribió:> ¿Qué versión usas de data.table?. > Yo tengo la 1.10.0... creo que es la última... > > Saludos, > Carlos Otega > www.qualityexcellence.es > > El 19 de enero de 2017, 1:30, Mauricio Monsalvo <m.monsalvo en gmail.com> > escribió: > >> No le gustó: >> Error in fread("datos.csv", sep = "|", header = TRUE, quote = "") : >> unused argument (quote = "") >> >> >> El 18 de enero de 2017, 20:35, Carlos Ortega <cof en qualityexcellence.es> >> escribió: >> >>> Hola, >>> >>> Prueba con esto: >>> >>> fread("datos.csv", sep = "|", header = TRUE, quote="") >>> >>> Con el parámetro quote, ignora las comillas del principio. >>> No elimina todas, pero te permite cargar el conjunto sin problemas. >>> Una vez cargado, ya puedes limpiar las columnas, quitando las comillas >>> adicionales, etc... >>> >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >>> El 19 de enero de 2017, 0:22, Mauricio Monsalvo <m.monsalvo en gmail.com> >>> escribió: >>> >>>> Hola. >>>> Tengo un archivo que viene separado por "|" y a su vez con (casi) todos >>>> los campos entre comillas ("..."), incluso los valores numéricos. Adjunto >>>> algunos datos de prueba. El error que da es que no encuentra 14 elementos >>>> en las filas (son 15 variables). >>>> Probé algunas variantes y traté de orientarme por la ayuda y Stack ( >>>> http://stackoverflow.com/search?q=read.table+sep%3D%22%7C%22), pero no >>>> encontré mejor solución que: >>>> 1) Abrir el archivo con Excel. >>>> 2) Reemplazar | por ; >>>> 3) Reemplazar " por [nada]; >>>> 4) Abrirlo con: >>>> datos <- read.table("datos.csv" , header=T, sep=";", dec=".", quote >>>> "", encoding = "UTF-8") >>>> y digamos que funciona, salvo que la primera variable contiene un " al >>>> inicio ("67, "67, "etc) y la última siempre termina con un " (ACCIDENTADO >>>> CRITICO", NIÑO NEONATO", "etc).- >>>> ¿Podrían ayudarme a levantarlo de una (separado por | y con los datos >>>> entre "") o bien a levantarlo luego del replace sin esas incómodas " al >>>> inicio de la primera variable y al final de la última? >>>> Muchas gracias. >>>> Saludos! >>>> >>>> -- >>>> Mauricio >>>> >>>> _______________________________________________ >>>> 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 >>> >> >> >> >> -- >> Mauricio >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >-- Mauricio [[alternative HTML version deleted]]
Marcelino de la Cruz Rot
2017-Jan-19 11:25 UTC
[R-es] read.table con .csv separado por "|"
Hola, de todas formas, si quieres una aproximación sólo con R puedes conseguirlo en estos cómodos pasos: nombres<-read.table("datos.csv",nrows=1, sep="|") datos <-read.table("datos.csv", sep="|",skip=1, encoding="UTF-8") datos<-apply(datos, 1, function(x) strsplit(as.character(x),"[|]")) datos<- sapply(datos, function(x) unlist(lapply(x, function(y) chartr('"', ' ',y)))) datos<- as.data.frame(t(as.data.frame(datos))) names(datos)<-as.character(unlist(nombres)) datos Probablemente luego necesitarás reconvertir las variables numéricas (las lee como factores) con algo como: datos$d_nomenclador<- as.numeric(as.character(datos$d_nomenclador)) Pero lo haces todo en R, que es de lo que se trata. ¿O no? ;-) Saludos, Marcelino El 19/01/2017 a las 11:31, Mauricio Monsalvo escribió:> Tenía la versión data.table 1.9.6.- Actualicé a la data.table 1.10.0 y > funcionó tal cual lo indicás. Muchas gracias. > ?Para eliminar las " adicionales estoy usando: > library(stringr) > library(plyr) > datos$d_nomenclador <- str_replace(datos$d_nomenclador, pattern='\\","', > replacement="") > datos$nomenclador_descripcion<- str_replace(datos$nomenclador_descripcion, > pattern='\\","', replacement="") > Pero elimina las del principio y sigo con problemas con las del final, como > si no las reconociera (debería: en el Excel cuando corro el reemplazar " > por [nada] elimina todas. > Las dos variables son chr. > head(datos) > d_nomenclador baja_nomenclador nomenclador_descripcion > nomenclador_asociado > 1: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 2: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 3: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 4: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 5: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 6: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > > > El 19 de enero de 2017, 4:25, Carlos Ortega <cof en qualityexcellence.es> > escribió: > >> ¿Qué versión usas de data.table?. >> Yo tengo la 1.10.0... creo que es la última... >> >> Saludos, >> Carlos Otega >> www.qualityexcellence.es >> >> El 19 de enero de 2017, 1:30, Mauricio Monsalvo <m.monsalvo en gmail.com> >> escribió: >> >>> No le gustó: >>> Error in fread("datos.csv", sep = "|", header = TRUE, quote = "") : >>> unused argument (quote = "") >>> >>> >>> El 18 de enero de 2017, 20:35, Carlos Ortega <cof en qualityexcellence.es> >>> escribió: >>> >>>> Hola, >>>> >>>> Prueba con esto: >>>> >>>> fread("datos.csv", sep = "|", header = TRUE, quote="") >>>> >>>> Con el parámetro quote, ignora las comillas del principio. >>>> No elimina todas, pero te permite cargar el conjunto sin problemas. >>>> Una vez cargado, ya puedes limpiar las columnas, quitando las comillas >>>> adicionales, etc... >>>> >>>> Saludos, >>>> Carlos Ortega >>>> www.qualityexcellence.es >>>> >>>> El 19 de enero de 2017, 0:22, Mauricio Monsalvo <m.monsalvo en gmail.com> >>>> escribió: >>>> >>>>> Hola. >>>>> Tengo un archivo que viene separado por "|" y a su vez con (casi) todos >>>>> los campos entre comillas ("..."), incluso los valores numéricos. Adjunto >>>>> algunos datos de prueba. El error que da es que no encuentra 14 elementos >>>>> en las filas (son 15 variables). >>>>> Probé algunas variantes y traté de orientarme por la ayuda y Stack ( >>>>> http://stackoverflow.com/search?q=read.table+sep%3D%22%7C%22), pero no >>>>> encontré mejor solución que: >>>>> 1) Abrir el archivo con Excel. >>>>> 2) Reemplazar | por ; >>>>> 3) Reemplazar " por [nada]; >>>>> 4) Abrirlo con: >>>>> datos <- read.table("datos.csv" , header=T, sep=";", dec=".", quote >>>>> "", encoding = "UTF-8") >>>>> y digamos que funciona, salvo que la primera variable contiene un " al >>>>> inicio ("67, "67, "etc) y la última siempre termina con un " (ACCIDENTADO >>>>> CRITICO", NIÑO NEONATO", "etc).- >>>>> ¿Podrían ayudarme a levantarlo de una (separado por | y con los datos >>>>> entre "") o bien a levantarlo luego del replace sin esas incómodas " al >>>>> inicio de la primera variable y al final de la última? >>>>> Muchas gracias. >>>>> Saludos! >>>>> >>>>> -- >>>>> Mauricio >>>>> >>>>> _______________________________________________ >>>>> 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 >>>> >>> >>> >>> -- >>> Mauricio >>> >> >> >> -- >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> > >-- Marcelino de la Cruz Rot Depto. de Biología y Geología Física y Química Inorgánica Universidad Rey Juan Carlos Móstoles España [[alternative HTML version deleted]]
Sensacional! Muchas gracias, Marcelino. Funcionó muy bien. Opté por el Gedit como editor de texto decente. Así que sumé por ese lado también. Gracias a la lista. Saludos. El 19 de enero de 2017, 8:25, Marcelino de la Cruz Rot < marcelino.delacruz en urjc.es> escribió:> Hola, > de todas formas, si quieres una aproximación sólo con R puedes conseguirlo > en estos cómodos pasos: > > > nombres<-read.table("datos.csv",nrows=1, sep="|") > datos <-read.table("datos.csv", sep="|",skip=1, encoding="UTF-8") > datos<-apply(datos, 1, function(x) strsplit(as.character(x),"[|]")) > datos<- sapply(datos, function(x) unlist(lapply(x, function(y) chartr('"', > ' ',y)))) > datos<- as.data.frame(t(as.data.frame(datos))) > names(datos)<-as.character(unlist(nombres)) > datos > > Probablemente luego necesitarás reconvertir las variables numéricas (las > lee como factores) con algo como: > datos$d_nomenclador<- as.numeric(as.character(datos$d_nomenclador)) > > Pero lo haces todo en R, que es de lo que se trata. > ¿O no? ;-) > > Saludos, > > Marcelino > > > > > El 19/01/2017 a las 11:31, Mauricio Monsalvo escribió: > > Tenía la versión data.table 1.9.6.- Actualicé a la data.table 1.10.0 y > funcionó tal cual lo indicás. Muchas gracias. > ?Para eliminar las " adicionales estoy usando: > library(stringr) > library(plyr) > datos$d_nomenclador <- str_replace(datos$d_nomenclador, pattern='\\","', > replacement="") > datos$nomenclador_descripcion<- str_replace(datos$nomenclador_descripcion, > pattern='\\","', replacement="") > Pero elimina las del principio y sigo con problemas con las del final, como > si no las reconociera (debería: en el Excel cuando corro el reemplazar " > por [nada] elimina todas. > Las dos variables son chr. > head(datos) > d_nomenclador baja_nomenclador nomenclador_descripcion > nomenclador_asociado > 1: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 2: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 3: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 4: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 5: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > 6: 67" NA NOMENCLADOR GCBA Res. 1893 Vig. 09-2016" > "20" > > > El 19 de enero de 2017, 4:25, Carlos Ortega <cof en qualityexcellence.es> <cof en qualityexcellence.es> > escribió: > > > ¿Qué versión usas de data.table?. > Yo tengo la 1.10.0... creo que es la última... > > Saludos, > Carlos Otegawww.qualityexcellence.es > > El 19 de enero de 2017, 1:30, Mauricio Monsalvo <m.monsalvo en gmail.com> <m.monsalvo en gmail.com> > escribió: > > > No le gustó: > Error in fread("datos.csv", sep = "|", header = TRUE, quote = "") : > unused argument (quote = "") > > > El 18 de enero de 2017, 20:35, Carlos Ortega <cof en qualityexcellence.es> <cof en qualityexcellence.es> > escribió: > > > Hola, > > Prueba con esto: > > fread("datos.csv", sep = "|", header = TRUE, quote="") > > Con el parámetro quote, ignora las comillas del principio. > No elimina todas, pero te permite cargar el conjunto sin problemas. > Una vez cargado, ya puedes limpiar las columnas, quitando las comillas > adicionales, etc... > > Saludos, > Carlos Ortegawww.qualityexcellence.es > > El 19 de enero de 2017, 0:22, Mauricio Monsalvo <m.monsalvo en gmail.com> <m.monsalvo en gmail.com> > escribió: > > > Hola. > Tengo un archivo que viene separado por "|" y a su vez con (casi) todos > los campos entre comillas ("..."), incluso los valores numéricos. Adjunto > algunos datos de prueba. El error que da es que no encuentra 14 elementos > en las filas (son 15 variables). > Probé algunas variantes y traté de orientarme por la ayuda y Stack (http://stackoverflow.com/search?q=read.table+sep%3D%22%7C%22), pero no > encontré mejor solución que: > 1) Abrir el archivo con Excel. > 2) Reemplazar | por ; > 3) Reemplazar " por [nada]; > 4) Abrirlo con: > datos <- read.table("datos.csv" , header=T, sep=";", dec=".", quote > "", encoding = "UTF-8") > y digamos que funciona, salvo que la primera variable contiene un " al > inicio ("67, "67, "etc) y la última siempre termina con un " (ACCIDENTADO > CRITICO", NIÑO NEONATO", "etc).- > ¿Podrían ayudarme a levantarlo de una (separado por | y con los datos > entre "") o bien a levantarlo luego del replace sin esas incómodas " al > inicio de la primera variable y al final de la última? > Muchas gracias. > Saludos! > > -- > Mauricio > > _______________________________________________ > R-help-es mailing listR-help-es en r-project.orghttps://stat.ethz.ch/mailman/listinfo/r-help-es > > > > -- > Saludos, > Carlos Ortegawww.qualityexcellence.es > > > > -- > Mauricio > > > > > -- > Saludos, > Carlos Ortegawww.qualityexcellence.es > > > > > -- > Marcelino de la Cruz Rot > Depto. de Biología y Geología > Física y Química Inorgánica > Universidad Rey Juan Carlos > Móstoles España > >-- Mauricio [[alternative HTML version deleted]]