Tipos de datos en R

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.

Vectores

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

Factores

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

Factores ordinales

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

Data Frames o conjuntos de datos

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

Guardar un data frame

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.

Conocer las características de un objeto

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

Resumen

Nuestras observaciones y variables pueden almacenarse en el R utilizando los siguiente objetos: