En esta presentación mostraremos cómo guarda el R la información de nuestras observaciones y variables.
El R soporta una variedad de tipos de datos y los almacena en una serie de objetos. En esta sección nos concentraremos en los siguientes tipos de objetos.
Podemos crear un vector numérico de la siguiente forma:
x <- c(10, 15, 14, 9.5, 18, 8)
Tenemos entonces un vector llamado “x” que contiene 6 observaciones.
x
## [1] 10.0 15.0 14.0 9.5 18.0 8.0
En el R, las variables cuantitativas se almacenan en un vector numérico.
Los vectores también pueden almacenar caracteres o expresiones lógicas (como verdadero / falso):
# Este es un vector de caracteres:
y <- c("José", "María", "Pedro", "Luis", "Elena",
"Sofía")
# Este es un vector lógico:
z <- c(FALSE, TRUE, TRUE, FALSE, TRUE, FALSE)
Los vectores nos permiten almacenar información, por ejemplo, los tres vectores que hemos creado pueden representar tres variables diferentes: las notas de un examen; el nombre de los estudiantes; si aprobaron o no el curso:
notas <- x
nom.est <- y
aprob <- z
notas
## [1] 10.0 15.0 14.0 9.5 18.0 8.0
nom.est
## [1] "José" "María" "Pedro" "Luis" "Elena" "Sofía"
aprob
## [1] FALSE TRUE TRUE FALSE TRUE FALSE
En el R, un factor representa una variable cualitativa o categórica. El factor almacena las categorías en la forma de un vector con números discretos integrales (1, 2, 3, 4, etc.) que son los códigos de los valores de la variable y otro vector de caracteres interno que contiene las etiquetas de esos códigos. Por ejemplo:
genero <- c("Masc", "Fem", "Masc", "Masc", "Fem", "Fem")
genero <- factor(genero)
genero
## [1] Masc Fem Masc Masc Fem Fem
## Levels: Fem Masc
El factor género en este caso es una variable categórica nominal y tiene 2 niveles o valores: Masc y Fem.
Internamente el R almacenará: Masc = 2; Fem = 1 (alfabeticamente). Eso puede verse al convertir el factor género en un vector de números integrales:
as.integer(genero)
## [1] 2 1 2 2 1 1
El factor como objeto también me permite almacenar variables categóricas ordinales. Supongamos que queremos registrar la evaluación que tienen los alumnos de sus profesores usando el siguiente esquema de codificación: Buena = 1; Regular = 2; Mala = 3. Entonces:
#Creamos un vector numérico que registra los datos:
eval.prof <- c(1,3,2,2,1,3)
#Convertimos el vector en un factor
eval.prof <- factor(eval.prof)
#Asignamos los niveles al factor:
levels(eval.prof) <- c("Bueno", "Regular", "Malo")
#Indicamos que se trata de un factor ordinal:
eval.prof <- ordered(eval.prof)
eval.prof
## [1] Bueno Malo Regular Regular Bueno Malo
## Levels: Bueno < Regular < Malo
Un data frame es un objeto que permite almacenar un conjunto de datos o una base de datos en la forma de una matriz de filas y columnas:
Podemos juntar los objetos que hemos creado a lo largo de esta presentación en un data frame:
#Creamos el data frame "mis.datos"
misdatos <- data.frame(nom.est, genero, notas, aprob,
eval.prof)
#Invocamos al data frame creado
misdatos
## nom.est genero notas aprob eval.prof
## 1 José Masc 10.0 FALSE Bueno
## 2 María Fem 15.0 TRUE Malo
## 3 Pedro Masc 14.0 TRUE Regular
## 4 Luis Masc 9.5 FALSE Regular
## 5 Elena Fem 18.0 TRUE Bueno
## 6 Sofía Fem 8.0 FALSE Malo
Podemos guardar un data frame. El archivo se guardará en el directorio de trabajo que hemos especificado al inicio de nuestra sesión:
save(misdatos, file="misdatos.Rda") # En formato de R
Si iniciamos una nueva sesión de R y queremos trabajar con los datos que hemos guardado, los cargamos usando el comando:
load("misdatos.Rda")
Para ello el archivo debe estar en el directorio de trabajo del R, de lo contrario debemos especificar la ruta completa del archivo entre los paréntesis y comillas.
Algunos comandos nos ayudan a conocer las características de un objeto. Por ejemplo usando los objetos que hemos creado hasta ahora:
length(genero) # número o cantidad de elementos del objeto
## [1] 6
str(genero) # estructura del objeto
## Factor w/ 2 levels "Fem","Masc": 2 1 2 2 1 1
class(misdatos) # clase o tipo de objeto
## [1] "data.frame"
# nombres de las variables (cuando el objeto es un data frame)
names(misdatos)
## [1] "nom.est" "genero" "notas" "aprob" "eval.prof"
# Niveles del factor (cuando el objeto es un factor)
levels(genero)
## [1] "Fem" "Masc"
Ejemplo de cómo conocer la estructura de un data frame:
str(misdatos)
## 'data.frame': 6 obs. of 5 variables:
## $ nom.est : Factor w/ 6 levels "Elena","José",..: 2 4 5 3 1 6
## $ genero : Factor w/ 2 levels "Fem","Masc": 2 1 2 2 1 1
## $ notas : num 10 15 14 9.5 18 8
## $ aprob : logi FALSE TRUE TRUE FALSE TRUE FALSE
## $ eval.prof: Ord.factor w/ 3 levels "Bueno"<"Regular"<..: 1 3 2 2 1 3
Nuestras observaciones y variables pueden almacenarse en el R utilizando los siguiente objetos: