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

Marcelino de la Cruz Rot marcelino.delacruz en urjc.es
Jue Ene 19 12:25:04 CET 2017


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



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