[R-es] Leer el tipo de dato desde fichero

rubenfcasal rubenfcasal en gmail.com
Mar Feb 18 11:20:59 CET 2014


Hola a todos,

     En mi caso no suelo utilizar información adicional en las bases de 
datos, al abrir el archivo de datos R decide automáticamente el tipo de 
variables y normalmente la decisión es aceptable (salvo quizás con 
cadenas de texto que por defecto convierte a factor).

     Si en 'datos' se tiene el data.frame resultante de importar los 
datos en R, yo empleo código de este estilo:

vnames <- names(datos) # Nombres
vcat <-  sapply(datos,is.factor)
vcat <- which(vcat)        #  Variables categóricas / cadena (indice 
numérico)
vnum <- which(!vcat)    #  Variables numéricas (indice numérico)

# vnames [vnum] nombres numéricas
# vnames [vcat] nombres categóricas

     Después hago cosas de este estilo:

# Opcionalmente creo un objeto vlabel con etiquetas más descriptivas que 
los nombres
# Este objeto lo guardo después con los datos:
# attr(datos, "variable.labels") <- vlabel (al estilo de como importa 
ficheros de SPSS el Rcmdr)

for (i in vcat) {
   barplot(table(datos[[i]]), xlab=vlabel[i], ylab="Frecuencia")
}

for (i in vnum) {
   hist(datos[[i]],main = paste("Histograma de" , vnames[i]), 
xlab=vlabel[i], ylab="Frecuencia")
}

     Por si os resulta de utilidad...

     Un saludo,
         Rubén.

El 18/02/2014 0:27, "Marcuzzi, Javier Rubén" escribió:
> Estimado Rafael
>
> Entiendo que un software genera un archivo *.csv, donde en cada fila hay
> un registro, pero no hay nombre de registros en las columnas y usted
> quiere mostrar a partir de estos a su cliente para comenzar a charlar
> sobre variables, campos, análisis, etc.
>
> ¿Es posible leer este archivo desde un programa de hojas de cálculo?
> Porque si no son millones posiblemente desde estos programas amigables
> usted pueda insertar una fila y escribir en cada campo el nombre
> correspondiente.
>
> Si esto no es posible, en algún lado debe estar especificado lo que
> usted denomina cabecera, por ejemplo en geonames.org hay una referencia
> para sus datos (la calidad de los datos es otro tema).
>
> Javier Marcuzzi
>
> El 17/02/14 19:10, Carlos Ortega escribió:
>> Hola Rafa,
>>
>> Por darte alguna sugerencia de por dónde apuntar.
>> No me suena que exista esa definición de cabecera que comentas para definir
>> atributos para las columnas del propio fichero, ya sabes los diferentes
>> mecanismos para importar ficheros en R: csv, txt, directamente de BBDD,
>> Excel, etc... Cada uno de ellos con una estructura definida, vaya todo esto
>> ya lo conoces.
>>
>> En cambio los ficheros que se importan desde SPSS, SAS o el propio MATLAB
>> llevan esa codificación que dices en su propia estructura de fichero. Creo
>> que mirando las funciones/código fuente de estas funciones de importación
>> podría darte alguna idea de como codificar estas cabeceras y utilizar las
>> mismas funciones de importación para tus ficheros.
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>>
>> El 17 de febrero de 2014, 11:39, Rafael Garcia Leiva <rgarcialeiva en gmail.com
>>> escribió:
>>> Hola a todos,
>>>
>>> Tengo un fichero CSV que se genera desde una aplicación, y que me gustaría
>>> importar en R. El problema es que el fichero es "genérico", por lo que en
>>> un principio no se muy bien el tipo de datos que me voy a encontrar. Desde
>>> R se los mostraré al usuario para que decida sobre qué campos quiere hacer
>>> qué análisis. Por tanto, en el propio CSV debería contener (en la cabecera,
>>> o similar) además del nombre, el tipo de dato.
>>>
>>> Hacer esto es fácil, sólo tengo que colocar en el fichero una pre-cabecera
>>> que leo desde R, y la utilizo para rellenar el valor de colClasses de
>>> read.table. Mi pregunta es si existe una forma "más estándar" de hacer esto
>>> en R. Es decir, si existe un tipo de fichero que permita especificar
>>> atributos para una columna, y cómo se lee este fichero desde R.
>>>
>>> Muchas gracias a todos
>>>
>>> Rafael
>>>



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