[R-es] read.table con .csv separado por "|"

Mauricio Monsalvo m.monsalvo en gmail.com
Jue Ene 19 12:30:59 CET 2017


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]]



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