Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción a R
Vamos a hablar de tres estructuras de datos en R:
1. Listas
2. Vectores
3. Data Frames
4. Descriptivos
Listas y vectores son estructuras simples; mientras que una data frame es una estructura compleja, construida
en base a las estructuras simples.
1. Listas
Una lista es un contenedor de valores. Estos valores pueden ser de cualquier tipo (numéricas o no-numéricas).
Tomando como referencia a una hoja de cálculo, una fila podría ser una lista!
alumnos=list(nombre="MG",
edad=28,
PC1=F)
Reemplazar elementos:
1
alumnos$nombre="Juan"
# Cambio:
alumnos
2. Vectores
Los vectores también son contenedores de valores. Todos estos valores deben ser del mismo tipo. Tomando
como referencia a una hoja de cálculo, una columna puede ser un vector.
nombre=c("Maria", "Hans", "Luisa", "Juan")
edad=c(19,20,22,22)
PC1=c(T,T,F,F)
Cada vector está compuesto de elementos del mismo tipo. Para acceder a elementos individuales:
nombre[2]
edad[2]
PC1[2]
Para eliminar:
nombre=nombre[-5]
nombre #ver objeto ¿Cómo hago para eliminar más de un elemento?
Ordenar vectores:
2
edad_ordenada=sort(edad, decreasing = T) #¿qué pasa si quitamos el argumento decreasing?
edad_ordenada #resultado
Go to page beginning
3. Data Frames
Las Data Frames son contenedores de valores. Se utlizan cuando necesitamos combinar vectores con listas.
La analogía más común es la hoja de cálculo.
#vectores
nombre=c("Maria", "Miguel", "Diana", "Fernanda", "Hans", "Piero", "Katherine", "Alejandra", "Noelia")
edad=c("33",NA,"21","19","18","22","23","25",NA)
ciudad=c("Lima", "Lima", "Cajamarca", "Huancayo", "Trujillo", "Cusco", "Lima", "Cusco", "Cajamarca")
nota_PC1= c(18,16,15,12,14,NA,19,10,NA)
alumnos
Length nos da el número de columnas. ¿Cuál es la diferencia con length para vectores y listas?
length(alumnos)
Para buscar elementos debemos tomar en cuenta la estructura de una data frame: data[fila, columna]
alumnos$nombre
3
## [7] "Katherine" "Alejandra" "Noelia"
alumnos[,c(1)]
Dos columnas:
alumnos[,c("edad", "ciudad")] #dos columnas, formato dataframe
La misma lógica aplica para la búsqueda de filas, solo cambia la posición de la coma:
alumnos[1,] #toda la información de Maria
Operaciones como esta no funcionarian, por lo que es necesario hacer LIMPIEZA DE DATOS:
mean(alumnos$edad)
Ahora si:
mean(alumnos$edad, na.rm=T) #añadimos indicación de eliminar perdidos
Go to page beginning
4
Merge!
Creemos una nueva data frame:
#vectores
nombre=c("Maria", "Miguel", "Diana", "Fernanda", "Hans", "Piero", "Katherine", "Alejandra", "Noelia")
nota_PC2=c(14,17,18,13,15,16,17,11,20)
alumnos2
alumnos_total
Nota: Merge junta data frames en base a columnas (añadimos variables a nuestros casos). En caso quisieramos
juntar filas (añadir casos a nuestras variables) utilizamos rbind.
Ponemos el nombre en el indice de la data:
row.names(alumnos_total)=alumnos_total$nombre
alumnos_total = alumnos_total[-c(1)]#ya no necesito la variable, la elimino.
alumnos_total
alumnosSub
Alternativa para eliminar los casos que tienen valores perdidos en cualquiera de las columnas:
alumnos_total[complete.cases(alumnos_total),] #guardo en un subset!
Aplicar funciones:
Veamos el promedio de notas por alumno:
Si quiero convertir mis variables a numéricas de manera simultanea:
5
alumnos_total[c(3,4)] = lapply(alumnos_total[c(3,4)], as.numeric)
Go to page beginning
4. Análisis descriptivo en R
library(rio)
data=import("Mosteller.csv")
6
4.1. Configuración de las variables
Siempre antes de comenzar a realizar nuestro análisis, debemos identificar la estructura de las variables y
verificar que estén bien “configuradas”. Es decir que la escala de la variable coincida con el objeto en R.
De “race”
table(data$race) #Exploramos frecuencias
##
## 1 2 3 6
## 1383 211 5 1
class(data$race) #Exploramos el formato de la variable
## [1] "integer"
data$race = factor(data$race, levels = c(1:6), labels = c("white","black","asian","hispanic","native ame
table(data$race)
##
## white black asian hispanic native american
## 1383 211 5 0 0
## others
## 1
class(data$race)
## [1] "factor"
De “classtype”:
class(data$classtype)
## [1] "integer"
table(data$classtype)
##
## 1 2 3
## 481 578 541
data$classtype = factor(data$classtype, levels = c(1:3), labels = c("small","regular","regular with aid"
str(data$classtype)
##
## small regular regular with aid
## 481 578 541
7
De “hsgrad”
class(data$hsgrad)
## [1] "integer"
table(data$hsgrad)
##
## 0 1
## 158 1442
data$hsgrad = factor(data$hsgrad, levels = c(0:1), labels = c("did not graduate","did graduate")) #ojo c
table(data$hsgrad)
##
## did not graduate did graduate
## 158 1442
str(data$hsgrad)
## [1] white
## attr(,"freq")
## [1] 1383
## Levels: white black asian hispanic native american others
Para “g4math” podemos:
library(DescTools)
mean(data$g4math) #este comando nos permitirá calcular la media
## [1] 712.7094
Para “g4math” podemos:
library(DescTools)
median(data$g4math) #este comando nos permitirá calcular la mediana
## [1] 712