Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instructivo R
Instructivo R
FAE-USACH
1
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
2
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
3
¿Qué es R y cómo comenzar a usarlo?
Caracteríticas y dónde se obtiene
Principales Características
Es gratis.
Es elevadamente flexible.
Interfaz gráfica de usuario (GUI) original Interfaz gráfica de usuario (GUI) adaptada
Ambiente de trabajo
Código
Resultados numéricos
Resultados gráficos
• Los códigos y sus resultados son • Los códigos y sus resultados son
mostrados en la misma ventana. mostrados en secciones
distintas.
• Los gráficos se muestran en • Los gráficos se muestran en
ventanas independientes. ventanas independientes,
generando un registro histórico
de sus vistas.
• Para lectura eficiente requiere una
estructura muy definida y mucho • Código fácilmente editable.
orden en el código. • Muestra el ambiente de trabajo.
Una vez que R Studio está instalado, lo primero es abrir un nuevo archivo de trabajo. Ir a menu,
archivo nuevo y elegir “R Script.”
Luego, se puede encontrar el directorio donde R Studio se está ejecutando.
Para ejecutar el
Obtener el directorio comando, selecciona lo
getwd() que quieres ejecutar y
luego presiona:
[1] "C:/Usuarios/NombreDelEquipo/Documentos" Ctrl+R / +enter
Si se quiere cambiar el directorio, se puede cambiar a uno nuevo de la siguiente manera:
Cambiar el directorio
setwd("D:/Javier/USACH/Curso R")
getwd()
[1] "D:/Javier/USACH/Curso R"
6
¿Qué es R y cómo comenzar a usarlo?
R como calculadora
Para comenzar a usarlo, ejecutemos R Studio:
Para ejecutar el
Cálculos comando, selecciona lo
que quieres ejecutar y
2+2; 3^2 luego presiona:
Ctrl+R / +enter
Resultados
[1] 4
[1] 9
7
¿Qué es R y cómo comenzar a usarlo?
R como calculadora
Cálculos
2+2; 3^2
[1] 4
[1] 9
Cálculos: Operadores
3^2*4/2-3; 4*3^2/2-3; -3+4*3^2/2
[1] 15
[1] 15
[1] 15
10
¿Qué es R y cómo comenzar a usarlo?
Guardar y mostrar objetos
Luego los objetos almacenados se pueden usar:
11
¿Dónde encontramos los objetos que vamos creando en una sesión de R?
¿Qué es R y cómo comenzar a usarlo?
Identificar y borrar objetos
Expresión, asignación, uso de memoria, inspección de objetos y eliminación.
Borrar objetos
rm(y)
objects()
[1] “MiPrimerX ” “x”
12
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
13
Tipos de datos
• character: a, hello.
• double: 1+e13
Nota: Se almacenan números reales de doble precisión, mantisa y exponente.
• integer: 10L.
Nota: agregar 'L' después de cualquier número entero almacena el número como un
entero (32 bits), que es más barato que el doble (53 bits) en términos de memoria.
• complex: 2+3i
Nota: Números complejos con partes reales e imaginarias.
14
Tipos de datos
Números
La opción predeterminada es almacenar números como objetos numéricos
(números reales de doble precisión).
Números “1” y “2” parecen “integers”. Sin embargo, estos están almacenados
como objetos numéricos (“1.00” o “2.00”)
Recuerde agregar el sufijo L si desea almacenar un número entero.
Casos especiales:
Inf: Infinito
NaN: valor indefinido (No número) Usualmente se confunde con NA que indica
valores perdidos.
Inf and NaN
1/Inf; 1/0; 2/0; 0/0
[1] 0
Estos son todos numéricos , [1] Inf
incluso el NaN! [1] Inf
[1] NaN
15
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
16
Examinar tipos de datos
Creación de 3 objetos: x, y, z
x <- “una palabra o muchas" # Podemos guardar frases (por ejemplo: tweets)
y <- 10 # Guardar solamente 1 número
z <- 1:10 # Guardar una secuencia de números, desde el 1 al 10 en este ejemplo
Dado un objeto, podemos conultar el tipo de dato que está contenido en él. Las
funciones más usadas para hacer esto son:
• class(): Muestra el tipo de objeto a “alto nivel”.
• typeof(): Muestra el tipo de objeto a “bajo nivel”.
• length(): Muestra la candidad de elementos en el objeto.
• attributes(): Muestra los meta datos asociados al objeto cuando ellos son un
poco más “complejos” que un vector. Por lo tanto, no siempre disponible.
17
Examinar tipos de datos: x
18
Examinar tipos de datos: y
19
Examinar tipos de datos: z
20
Examinar tipos de datos
Para esto podemos usar la función is.dt() para probar el tipo de datos dt y
tendremos como resultado TRUE o FALSE. Por ejemplo, ¿cuál es “TRUE”?:
• is.character(x)
• is.numeric(x)
• is.double(x)
• is.integer(x)
21
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
22
Estructura de Datos
Tipos de estructuras:
• Vector: Estructura de datos unidimensional donde todos sus elementos son del mismo tipo de datos.
• Factor: Puede ser considerado como un tipo de Vector. Cada elemento debe ser uno de un conjunto
fijo de valores, llamados niveles del factor.
• Matrix: Estructura de datos bidimensional donde todos sus elementos son del mismo tipo.
• Array: Estructura de datos Multidimensional. Puede ser entendida como una colección de matrices.
• Data frame: Bidimensional. Cada columna contiene valores del mismo tipo de datos. Sin embargo,
diferentes columnas pueden tener diferentes tipos de datos. Todas las columnas deben tener la mismo
longitud.
• List: Multidimensional. Es la estructura de datos más compleja. Cada componente de una lista puede
23
puede ser de cualquier tipo de estructura de datos.
Estructura de Datos
Vectores
24
Estructura de Datos
Vectores
Creación de vectores
25
Estructura de Datos
Vectores
^ Primero
*y/ Segundo
+y- Tercero
26
Estructura de Datos
Vectores
Otros tipos de vectores: Además de Numéricos, existen de Caracteres, Lógicos y Factores.
28
Estructura de Datos
Vector: Variables
Variables pueden ser consideradas como vectores de un solo elemento
Crear una variable y multiplicar una variable por un vector
variable_x <- 2; vector_x; variable_x; variable_x * vector_x
[1] 1 3 5 7 9
[1] 2
[1] 2 6 10 14 18
Precaución: Vectores de diferentes longitudes pueden ser multiplicados….
Multiplicando dos vectores de diferentes longitudes
variable_x <- c(2,3); variable_x; vector_x; variable_x * vector_x
[[1] 2 3
[1] 1 3 5 7 9
[1] 2 9 10 21 18
Warning message:
In variable_x * vector_x :
longer object length is not a multiple of shorter object length
29
Estructura de Datos
Factor (no ordenado)
[1] "factor"
[1] "integer"
$levels
[1] “alto" “bajo" "medio"
$class
[1] "factor"
30
Estructura de Datos
Factor (no ordenado)
31
Estructura de Datos
Factor (no ordenado)
Otra manera de establecer un orden específico…
IMPORTANTE:
Estas son algunas formas de especificar el orden de visualización solamente. No
estamos configurando "alto" más alto que "medio“ realmente, solo estamos
indicando que "bajo" debería mostrarse primero, "medio" segundo y "alto" tercero.
32
Estructura de Datos
Factor ordenado
Informalmente, el primero (Factor) puede ser dividido en dos, a pesar de que sus
niveles estén aún desordenados:
35
Estructura de Datos
Arrays
Arrays: Son un conjunto de datos indexados por uno o más subíndices.
Creación de arrays
,,2
[,1] [,2] [,3]
[1,] 2 4 1
[2,] 3 5 2
36
Estructura de Datos
Arrays
[1] "array"
[1] "integer"
[1] 12
$dim
[1] 2 3 2
37
Estructura de Datos
Data Frames
38
Estructura de Datos
Data Frames
39
Estructura de Datos
Listas
40
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
41
Asignación de nombres a objetos de R
Vectores
Nombres: Vectores
vector_x<-c(1,3,5,7,9); vector_x; names(vector_x)
[1] 1 3 5 7 9
NULL
names(vector_x) <- c(“ABC", “CDE", “EFG", “GHI", “IJK"); vector_x
ABC CDE EFG GHI IJK
1 3 5 7 9
names(vector_x)
“ABC" “CDE" “EFG" “GHI" “IJK"
42
Asignación de nombres a objetos de R
Matrices
Nombres: Matrices
mi_mat_r<-matrix(1:9, nrow = 3, ncol = 3, byrow=T); mi_mat_r;
dimnames(mi_mat_r)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
NULL
dimnames(mi_mat_r) <- list(c("a", "b", "c"), c("d", "e", "f")); mi_mat_r
d e f
a 1 2 3
b 4 5 6
c 7 8 9
dimnames(mi_mat_r)
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "d" "e" "f"
43
Asignación de nombres a objetos de R
Matrices
Una alternativa es establecer los nombres para las filas y columnas separadamente.
44
Asignación de nombres a objetos de R
Data frame
Nombres: Data Frame
mi_df <- data.frame("Ranking"= c(3,1,4,2), “Edad"= c(24,25,23,28), "Nombre"=
c("Juan","Dominga","Pedro","María")); mi_df; names(mi_df)
Ranking Edad Nombre
1 3 24 Juan
2 1 25 Dominga
3 4 23 Pedro
4 2 28 María
[1] "Ranking" “Edad" "Nombre"
names(mi_df)<-c(“Posición",“Años",“PrimerNombre"); mi_df; names(mi_df)
Posición Años PrimerNombre
1 3 24 Juan
2 1 25 Dominga
3 4 23 Pedro
4 2 28 María
[1] “Posición" ”Años" ”PrimerNombre"
Para cambiar el nombre de las filas use:
45
row.names(mi_df)<-c(“Persona1","Persona2","Persona3","Persona4")
Asignación de nombres a objetos de R
Listas
Nombres de Listas (1/2): Primero, miremos la lista mat_array_df_list
Nombres: Listas
mat_array_df_list; names(mat_array_df_list)
[[1]] [[3]]
[1,] [,2] [,3] , , 1
[1,] 1 4 7 [,1] [,2] [,3]
[2,] 2 5 8 [1,] 1 3 5
[3,] 3 6 9 [2,] 2 4 1
, , 2
[[2]] [,1] [,2] [,3]
[1,] [,2] [,3] [1] 2 4 1
[1,] 1 2 3 [2,] 3 5 2
[2,] 4 5 6
[3,] 7 8 9 [[4]]
Ranking Edad Nombre
Persona1 3 24 Juan
Persona2 1 25 Dominga
Persona3 4 23 Pedro
Persona4 2 28 María
NULL 46
Asignación de nombres a objetos de R
Listas
Nombres de Listas (2/2): Luego, asignemos nombres a mat_array_df_list
Nombres: Listas
names(mat_array_df_list) <-c (“mi_mat_c”, “mi_mat_r”, “array_x”, “mi_df”);
mat_array_df_list; names(mat_array_df_list)
$mi_mat_c $array_x
[1,] [,2] [,3] , , 1
[1,] 1 4 7 [,1] [,2] [,3]
[2,] 2 5 8 [1,] 1 3 5
[3,] 3 6 9 [2,] 2 4 1
, , 2
$mi_mat_r [,1] [,2] [,3]
[1,] [,2] [,3] [1] 2 4 1
[1,] 1 2 3 [2,] 3 5 2
[2,] 4 5 6
[3,] 7 8 9 $mi_df
Ranking Edad Nombre
Persona1 3 24 Juan
Persona2 1 25 Dominga
Persona3 4 23 Pedro
Persona4 2 28 María
[1] “mi_mat_c" “mi_mat_r" “array x” “mi_df” 47
Asignación de nombres a objetos de R
Comando clave según tipo de objeto
Nombres:
La asignación de nombres a objetos en R es bastante intuitiva
lista names()
48
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
49
Conversión de Data Structure
50
Transformar de tipos de datos
Se puede usar as.dt(x) para transformar x desde el tipo de datos dt (si es que está
disponible), ejemplo: as.double(x), as.integer(x):
x_int <- -6:6; x_int; class(x_int)
[1] -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
[1] “integer”
x_num <- as.numeric(x_int); x_num; class(x_num)
[1] -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
[1] “numeric”
x_log <- as.logical(x_int); x_log; class(x_log)
[1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE
[1] “logical”
x_cha <- as.character(x_int); x_cha; class(x_cha)
[1] “-6” “-5” “-4” “-3” “-2” “-1” “0” “1” “2” “3” “4” “5” “6”
[1] “character”
x_int2 <- as.integer(x_cha); x_int2; class(x_int2) #Regresar a “integer” desde “character”
[1] -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
51
[1] “integer”
Mezclando datos: Transformación implícita
54
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
55
Directorio de trabajo
(Recordatorio)
R almacena todo en un “Directorio de Trabajo” (wd: Working Directory). Si este directorio de trabajo no es
especificado, R asume uno por defecto.
Para identificar y modificar el directorio de trabajo, hagamos lo siguiente:
R usa / en vez de \
56
Importar datos
Línea vacía
57
Importar datos
Una forma de importar datos, es hacerlo desde el conocimiento del usuario. Por ejemplo, al consultarle por su
nombre:
58
Importar datos: archivos csv
Además se pueden importar datos desde un archivo csv siempre y cuando estén perfectamente formateados:
myDataName<- read.csv(“Directorio/ArchivodeDatos.csv”)
Los datos contenidos en archivos *.csv generalmente están separados por coma. Sin embargo, algunas veces
pueden estar separados por “punto y coma”.
ConsumoCombustibleUK.csv
datoCombustibles_csv <- read.csv(“D:/......ConsumoCombustibleUK.csv”, nrows=10); head(datoCombustibles_csv, 4)
Transporte.ModoTransp.Combustible.Vehiculo.Año.Consumo
1 Sí;Calle;Bencina;Autos y taxis;2000;20.2
2 Sí;Calle;Bencina;Vans livianas;2000;1.0
3 Sí;Calle;Bencina;Motos y Scooters;2000;0.2
4 Sí;Calle;Diesel;Autos y taxis;2000;4.2
datoCombustibles_csv <- read.csv(“D:/......ConsumoCombustibleUK.csv” ,sep=“;”, nrows=10);
head(datoCombustibles_csv, 4)
Transporte ModoTransp Combustible Vehiculo Año Consumo
1 Sí Calle Bencina Autos y taxis 2000 20.2
2 Sí Calle Bencina Vans livianas 2000 1.0
3 Sí Calle Bencina Motos y Scooters 2000 0.2
4 Sí Calle Diesel Autos y taxis 2000 4.2
59
Nota: Reemplazar “D:/……” por el directorio del archivo.
Importar datos: archivos csv
Y finalmente:
ConsumoCombustibleUK.csv
datoCombustibles_csv <- read.csv(“D:/......ConsumoCombustibleUK.csv” ,sep=“;”);
dim(datoCombustibles_csv)
[1] 224 6
Nota: R no nos avisa cuando creamos un objeto con un mismo nombre de otro
objeto.
En este ejemplo hemos creado “datoCombustibles_csv” tres veces y sólo hay un
objeto llamado “datoCombustibles_csv” en R , que corresponde al último creado.
60
Importar datos: archivos txt
V1
1 ÿbT Dependiendo de la versión en que
el archivo de texto está guardado,
2 \n el mensaje de error cambia
3 Y
4 R
Si usamos “sep=‘\t’ ” como una opción por ejemplo:
Cuando el archivo que queremos importar esta codificado en UTF-16 se puede usar lo siguiente:
ConsumoCombustibleUK.csv
datoCombustibles_txt <- read.table(“D:/......ConsumoCombustibleUK.txt” ,sep=‘\t’ ,fileEncoding
=“UTF-16LE”); head(datoCombustibles_txt,4);
dim(datoCombustibles_txt)
V1 V2 V3 V4 V5 V6
1 Transporte ModoTransp Combustible Vehiculo Año Consumo
2 Sí Calle Bencina Autos y taxis 2000 20.2
3 Sí Calle Bencina Vans livianas 2000 1.0
4 Sí Calle Bencina Motos y Scooters 2000 0.2
5 Sí Calle Diesel Autos y taxis 2000 4.2
[1] 225 6
La codificación UTF-16 no es común cuando se trabaja con con algunas herramientas en Windows.
Cuando el archivo que queremos importar esta codificado en UTF-16 se puede usar lo siguiente:
ConsumoCombustibleUK.csv
datoCombustibles_txt <- read.table(“D:/......ConsumoCombustibleUK.txt” ,sep=‘\t’ ,fileEncoding
=“UTF-16LE”,header=TRUE); head(datoCombustibles_txt,4);
dim(datoCombustibles_txt)
Transporte ModoTransp Combustible Vehiculo Año Consumo
1 Sí Calle Bencina Autos y taxis 2000 20.2
2 Sí Calle Bencina Vans livianas 2000 1.0
3 Sí Calle Bencina Motos y Scooters 2000 0.2
4 Sí Calle Diesel Autos y taxis 2000 4.2
[1] 224 6
El enfoque más común es convertir cuanlquier archivo que contenga el set de datos en csv o txt
file y después imprtarlo desde R. Sin embargo, otros formatos son soportados por diferentes
paquetes:
Consideremos un set de datos en un archivo Excel. Primero, hay que instalar y cargar el paquete
‘readxl’ usando:
install.packages(“readxl”) ; library(readxl)
ConsumoCombustibleUK.csv
datoCombustibles_excel <- read_excel(“D:/......ConsumoCombustibleUK.xlsx” ,n_max=10) ;
head(datoCombustibles_excel) ; dim(datoCombustibles_excel) ; class(datoCombustibles_excel) # Tibble. Similar al
formato de data frame.
# A tibble: 6 x 6
Transporte ModoTransp Combustible Vehiculo Año Consumo
<chr> <chr> <chr> <chr> <dbl> <dbl>
1 Sí Calle Bencina Autos y taxis 2000 20.2
2 Sí Calle Bencina Vans livianas 2000 1.0
3 Sí Calle Bencina Motos y Scooters 2000 0.2
4 Sí Calle Diesel Autos y taxis 2000 4.2
5 Sí Calle Diesel Vans livianas 2000 3.60
6 Sí Calle Diesel Vehiculos de carga pesada 2000 6.27
[1] 10 6
[1] “tbl_df” “tbl” “data.frame”
Nota: Reemplazar “D:/……” por el directorio del archivo. 64
Importar datos: xlsx files
Trabajaremos con data frames, por lo tanto necesitamos hacer una transformación:
ConsumoCombustibleUK.csv
datoCombustibles_excel <- read_excel(“D:/......ConsumoCombustibleUK.xlsx”) ;
datoCombustibles_excel<-as.data.frame(datoCombustibles_excel) ; head(datoCombustibles_excel) ;
dim(datoCombustibles_excel) ; class(datoCombustibles_excel)
[1] 224 6
[1] “data.frame”
65
Nota: Reemplazar “D:/……” por el directorio del archivo.
Importar datos: xlsx files usando read.table()
También es posible ir al archivo Excel, copiar la tabla a ser usada en R y luego usar la función
read.table(file = "clipboard", header=TRUE)
Hay que tener presente la forma en que R usa lo separadores de decimales y miles para configurarlo de la
misma manera en Excel antes de copiar.
Por ejemplo,
read.table(file = "clipboard“, sep=“t”, header=TRUE)
66
read.table(file = "clipboard“, sep=“\t”, header=TRUE)
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
67
Operadores lógicos
Operadores lógicos: |, ||
Igual que para el caso &:
c(T,F,T) | c(T,F,T)
c(T,F,T) || c(T,F,T)
[1] TRUE FALSE TRUE
[1] TRUE
c(T,F,T) | c(F,F,T)
c(T,F,T) || c(F,F,T)
[1] TRUE FALSE TRUE
[1] TRUE
c(F,F,T) | c(F,F,T)
c(F,F,T) || c(F,F,T)
[1] FALSE FALSE TRUE
[1] FALSE
Precaución: R evalúa de izquierda a derecha para examinar sólo el primer elemento de cada vector
cuando usa ||.
Por lo tanto, hay que usar el operador lógico “|” a menos que realmente se necesite ||. 69
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11. Gráficos
70
Sub-seleccionar
Hay tres tipos de operadores con los cuales se puede seleccionar un subset particular
de elementos de un objeto R
Ejemplos:
Hay tres tipos de operadores con los cuales se puede seleccionar un subset particular de
elementos de objetos de R
Y de nuevo:
x[c(2,3,5)][2:3][2] # Selecciona el segundo elemento desde la selección previa
[1] "e"
72
Sub-seleccionar un vector
Subseleccionar un vector:
Operadores lógicos
x[x>"c"]; x[-(1:3)]
[1] "d" "e" "f"
[1] "d“ "e" "f"
x[x>"c" & x<"f"]
[1] "d“ "e" También podemos hacer referencia a otro
vector:
x[x!=c("a", "b", "f")]
[1] "c" "d" "e" Subseleccionar un vector basado en otro:
Operadores lógicos.
y<-(-3:3)[-4]^2; y
x[y>2]
[1] 9 4 1 1 4 9
[1] "a" "b" "e“ "f"
73
Sub-seleccionar una Matriz
74
Sub-seleccionar una Matriz
Ejercicios:
1) Seleccione la tercera columna
2) Seleccione la primera y la segunda columna
3) Seleccione la primera y tercera columna
75
Sub-seleccionar una Matriz
[1] 6
Posición Años
Persona2 1 25
Persona4 2 28 77
Sub-seleccionar un Data Frame
78
Sub-seleccionar una lista
80
Sub-seleccionar con la función ‘which()’
81
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
82
Funciones incoporadas para estadísticas descriptivas
¿Qué son las funciones?
Una función de R es un objeto que ejecuta un set de instrucciones con un propósito específico, por
ejemplo:
- Devolución de información.
- Procesamiento de datos
- Transformación objetos
- Realizar analisis
La estructura más general de la línea de comando para usar una función es:
Por ejemplo, sum(1:4) usa una secuencia de integers consecutivos de 1 a 4 como objetos y devuelve 10.
Este no requiere argumentos adicionales.
Algunas veces las funciones permiten/ necesitan más especificaciones para trabajar. Estas son llamados
“argumentos”. Es común usar objetos en la función como un argumento especial. De hecho algunas
funciones trabajan sólo con argumentos. Por ejemplo:
En este caso, la función seq() necesita al menos un argumento para trabajar. Si no se da ninguna
83
especificación entonces las opciones de default son consideradas.
Funciones incoporadas para estadísticas descriptivas
¿Qué son las funciones?
Usualmente el usuario quiere guardar los resultados de un función, entonces:
En esta sección, nos enfocaremos en las funciones incorporadas. Estas son funciones que no
requieren ser instaladas usando un paquete.
Funciones incorporadas:
x <- c(1,2,3,4)
length(x)
[1] 4
Primera línea: Usamos la función “c()”, la cual combina 4 argumentos dentro de un vector y lo
asignamos al objeto x.
Segunda línea: Usamos la función “length()”, la cual calculó y devolvió el largo de un vector.
Nota: El resultado de la función length(x) no fue asignado a ningún objeto. Por lo tanto, el
resultado es mostrado en la pantalla y no es guardado. 84
Funciones incoporadas para estadísticas descriptivas
Funciones generales
85
Funciones incoporadas para estadísticas descriptivas
Funciones generales
cbind(x,y) – combina vectores por columnas rbind(x,y) – combina vectores por filas
cbind(x,y) rbind(x,y)
x y [,1] [,2] [,3] [,4]
[1,] 1 3 X 1 2 3 4
[2,] 2 4 Y 3 4 5 6
[3,] 3 5
[4,] 4 6
Class(x) es “integer”, pero class(x+2) es númerico. Identical (x,y) no sólo prueba si los valores de
los elementos de dos vectores son lo mismo, sino también su clase. Solución: usa x+2L para
obtener un “integer”. 86
Funciones incoporadas para estadísticas descriptivas
Funciones generales
unique(x) – remueve duplicados de un vector.
unique(append(x,y))
[1] 1 2 3 4 5 6
cut(x,breaks=n o breaks=vector con puntos de corte) – divide al vector x en un factor con n variables.
cut(0:5,2)
[1] (-0.005,2.5] (-0.005,2.5] (-0.005,2.5] (2.5,5] (2.5,5] (2.5,5]
Levels: (-0.005,2.5] (2.5,5]
Cuando breaks=n, el rango de los datos es dividido en n partes de igual longitud y entonces los
límites exteriores son movidos en un 0,1% del rango para asegurar que ambos valores extremos
estén dentro de los intervalos. 87
Funciones incoporadas para estadísticas descriptivas
Funciones generales
93
Funciones incoporadas para estadísticas descriptivas
Funciones de fechas
strftime(date,infoOfInterest) – Captura
información de interés a cerca de una fecha:
día, mes, año, etc.
strftime(“2020-01-30 10:50:55”,”%S”);
strftime(“2020-01-30 10:50:55”,”%M”);
strftime(“2020-01-30 10:50:55”,”%H”);
strftime(“2020-01-30 10:50:55”,”%d”);
strftime(“2020-01-30 10:50:55”,”%m”);
strftime(“2020-01-30 10:50:55”,”%y”);
strftime(“2020-01-30 10:50:552,”%Y”)
[1] “55” difftime(end.time,init.time,units=“secs”) –
[1] “50” Calcula las diferencias entre dos fechas en
[1] “10” segundos, días, etc.
[1] “30”
[1] “01” difftime(“2020-12-31”,”2020-06-01”,units=“days”)
[1] “20”
[1] Time difference of 213.0417 days
[1] “2020”
94
Funciones incoporadas para estadísticas descriptivas
Funciones Matemáticas
95
Funciones incoporadas para estadísticas descriptivas
Funciones de Estadísticas descriptivas
96
Agenda
Introducción a R
1. ¿Qué es R y cómo comenzar a usarlo?
2. Tipos de datos
3. Examinar tipos de datos
4. Estucturas de datos
5. Asignación de nombres a objetos R
6. Tranformación de tipos de estructuras de datos y clases
7. Importar datos
8. Operadores lógicos
9. Sub-seleccionar
10. Funciones preestablecidas para análisis estadístico
11.Gráficos
97
Gráficos
Simulación de una base de datos
Ejecute este código y vea qué es lo que obtiene:
set.seed(123)
zona<-factor(sample(c("Z1","Z2","Z3"),1000,replace=TRUE,prob=c(0.5,0.3,0.2)))
noche<-as.factor((runif(1000,0,1)>0.5)*1)
dia<-factor(sample(c("L","M","Mi","J","V","S","D"),1000,
replace=TRUE,prob=c(0.20,0.15,0.10,0.15,0.20,0.10,0.10)))
dia<-factor(dia,levels=c("L","M","Mi","J","V","S","D"))
medioDePago<-factor(sample(c("Efectivo","Tarjeta","Otro"),1000,replace=TRUE,
prob=c(0.4,0.4,0.2)))
ingreso_combust<-round(rgamma(1000,12,1)+2,1)
ingreso_otros<- -5+ingreso_combust*0.1+
rnorm(1000,3,10)*ifelse(ingreso_combust>20,1,
ifelse(ingreso_combust>15,0.7,
ifelse(ingreso_combust>10,0.5,0.4)))
ingreso_otros[ingreso_otros<0]<-0
length(ingreso_otros[ingreso_otros==0])
98
Gráficos
hist(ingreso_combust+ingreso_otros)
99
Gráficos
hist(ingreso_combust+ingreso_otros,
main="Histograma del total de ingreso
por transacción",
xlab="Ingreso Total",
col="lightblue",
border=4,
breaks=15)
100
Gráficos
hist(ingreso_combust+ingreso_otros,
main="Histograma del total de ingreso
por transacción",
xlab="Ingreso Total",
col="lightblue",
border=4,
breaks=15,
freq=FALSE)
101
Gráficos
hist(ingreso_combust+ingreso_otros,
main="Histograma del total de ingreso
por transacción",
xlab="Ingreso Total",
col="lightblue",
border=4,
breaks=15,
freq=FALSE)
lines(density(ingreso_combust+ingreso_otros,bw=2),
col="darkblue",lwd=3,lty=2)
plot(ingreso_combust,ingreso_otros)
103
Gráficos
plot(ingreso_combust,ingreso_otros,
main="Gráfico de dispersión de
dos fuentes de ingreso",
xlab="Combustible", ylab="Otros")
104
Gráficos
plot(ingreso_combust,ingreso_otros,
main="Gráfico de dispersión de
dos fuentes de ingreso",
xlab=“Combustible",ylab="Otros", col=noche)
legend("topright",c("dia","noche"),
col=noche, pch=c(1,1))
105
Gráficos
plot(ingreso_combust,ingreso_otros,
main="Gráfico de dispersión de
dos fuentes de ingreso",
xlab=“Combustible",
ylab="Otros", col=noche,
pch=as.numeric(medioDePago))
legend("topright",c("dia","noche"),
col=noche, pch=c(1,1))
legend("topleft",c("Efectivo","Tarjeta","Otro"),
pch=1:length(levels(medioDePago)))
106
Gráficos
No olvidar que todas las opciones (colores, figuras) deben estar vinculadas al mismo conjunto
de observaciones.
plot(table(dia), type="o")
109
Gráficos
barplot(table(dia))
111
Gráficos
barplot(table(dia),axes=FALSE,
names.arg=c("Lun", "Mar", "Mie",
"Jue", "Vie", "Sab", "Dom"),
main="Cantidad de ventas",
border="red", col="darkblue")
axis(2, las=1, at=25*0:max(table(dia)))
112
Gráficos
barplot(table(zona,dia),axes=FALSE,
names.arg=c("Lun", "Mar", "Mie", "Jue",
"Vie", "Sab", "Dom"),
main="Cantidad de ventas por zona",
border="red",col=heat.colors(3))
axis(2, las=1, at=25*0:max(table(zona,dia)))
legend(7.5, 220, levels(zona), cex=0.8,
fill=heat.colors(3),bty="n")
113
Gráficos
mp<-barplot(table(zona,dia),axes=FALSE,
names.arg=c("Lun", "Mar", "Mie",
"Jue", "Vie", "Sab", "Dom"),
main="Cantidad de ventas por zona",
border="red",col=heat.colors(3))
axis(2, las=1, at=25*0:max(table(zona,dia)))
text(mp,10,paste(round(table(zona,dia)/
matrix(rep(colSums(table(zona,dia)),3),
ncol=7,byrow=T)*100)[1,],"%",sep=""))
legend(7.5, 220, levels(zona), cex=0.8, fill=heat.colors(3), bty="n")
114
Gráficos
mp<-barplot(table(zona,dia),axes=FALSE,
names.arg=c("Lun", "Mar", "Mie", "Jue",
"Vie", "Sab", "Dom"),
main="Cantidad de ventas por zona",
border="red",col=heat.colors(3))
axis(2, las=1, at=25*0:max(table(zona,dia)))
text(mp,(table(zona,dia)/2)[1,],
paste(round(prop.table(table(zona,dia),2)*100)[1,],"%",sep=""))
text(mp,table(zona,dia)[1,]+(table(zona,dia)/2)[2,],
paste(round(prop.table(table(zona,dia),2)*100)[2,],"%",sep=""))
text(mp,table(zona,dia)[1,] +table(zona,dia)[2,]+(table(zona,dia)/2)[3,],
paste(round(prop.table(table(zona,dia),2)*100)[3,],"%",sep=""))
legend(7.5,220,levels(zona),cex=0.8, fill=heat.colors(3),bty="n")
115
Gráficos
mp<-barplot(prop.table(table(zona,dia),2)*100,
axes=FALSE, names.arg=c("Lun", "Mar",
"Mie", "Jue", "Vie", "Sab", "Dom"),
main="Distribución de ventas por zona",
border="red", col=heat.colors(3))
axis(2, las=1, at=25*0:100)
text(mp,(prop.table(table(zona,dia),2)/2)[1,]
*100,paste(round(prop.table(table(zona,dia),2)*100)[1,],"%",sep=""))
text(mp,(prop.table(table(zona,dia),2)[1,]+(prop.table(table(zona,dia),2)/2)[2,])
*100,paste(round(prop.table(table(zona,dia),2)*100)[2,],"%",sep=""))
text(mp,(prop.table(table(zona,dia),2)[1,]+prop.table(table(zona,dia),2)[2,]
+(prop.table(table(zona,dia),2)/2)[3,])
*100,paste(round(prop.table(table(zona,dia),2)*100)[3,],"%",sep=""))
legend(3, 116, levels(zona), cex=0.8, fill=heat.colors(3),bty="n",horiz =T, xpd=TRUE) 116
Gráficos
barplot(table(dia,zona),axes=FALSE,
names.arg=c("Z1", "Z2", "Z3"),
main="Cantidad de ventas por día",
border="red",col=heat.colors(7))
axis(2, las=1, at=100*0:max(table(dia,zona)))
legend(3, 490, c("Lun", "Mar", "Mie", "Jue",
"Vie", "Sab", "Dom"),
cex=0.8, fill=heat.colors(7), bty="n")
117
Gráficos
barplot(table(dia,zona),axes=FALSE,
names.arg=c("Z1", "Z2", "Z3"),
main="Cantidad de ventas por dia",
border="red",col=heat.colors(7),
beside = TRUE)
axis(2, las=1, at=20*0:max(table(dia,zona)))
legend(18, 110, c("Lun", "Mar", "Mie", "Jue",
"Vie", "Sab", "Dom"),
cex=0.8, fill=heat.colors(7),bty="n")
118
Gráficos
boxplot(ingreso_combust ~ zona,
main="Gráfico de cajas para
Ingreso por Combustible")
119
Gráficos
Algunos tipos
¿Cuál es cual? plot(valoresx,xcuad,type="l") plot(valoresx,xcuad,type="p")
valoresx <- -5:5 plot(valoresx,xcuad,type="b") plot(valoresx,xcuad,type="s")
xcuad <- valoresx^2 plot(valoresx,xcuad,type="h") plot(valoresx,xcuad,type="n")
120
Gráficos
Algunos tipos
¿Cuál es cual? plot(valoresx,xcuad,type="l") plot(valoresx,xcuad,type="p")
valoresx <- -5:5 plot(valoresx,xcuad,type="b") plot(valoresx,xcuad,type="s")
xcuad <- valoresx^2 plot(valoresx,xcuad,type="h") plot(valoresx,xcuad,type="n")
Lines Points Both
121
Gráficos
Edición
Los principales ajustes de formato sobre un gráfico son los siguientes:
123
Gráficos
Edición
Editando los ejes.
plot(valoresx,xcuad,axes=FALSE)
axis(side=1,pos=0,at=c(-5,0,5))
axis(side=2,pos=0,at=c(0,5,10,15,20,25),labels=c("","5","10","15","20","25"),las=1) # ¿Qué
hace el comando las?
box()
124
Gráficos
Segmentos
### Crea un gráfico vacío
plot(c(-2, 2), c(-2, 2), type = "n", xlab="", ylab="")
125
Gráficos
Múltiples
par(mfrow=c(1,2))
plot(mtcars$wt,mtcars$mpg)
plot(valoresx,xcuad,type="b")
par(mfrow=c(1,1))
126
Gráficos
Guadar en formato jpg ó pdf
Este código genera un archivo jpg y otro pdf con la imagen del gráfico construido.
127