En RStudio podemos tener varias ventanas que nos permiten tener más control de nuestro “ambiente”, el historial, los “scripts” o códigos que escribimos y por supuesto, tenemos nuestra consola, que también tiene el símbolo “>” con R. Podemos pedir operaciones básicas
2+5
[1] 7
5*3
[1] 15
#Para escribir comentarios y que no los lea como operaciones ponemos el símbolo de gato# Lo podemos hacer para un comentario en una línea o la par de una instrucción1:5# Secuencia 1-5
[1] 1 2 3 4 5
seq(1, 10, 0.5) # Secuencia con incrementos diferentes a 1
R es un lenguaje de programación por objetos. Por lo cual vamos a tener objetos a los que se les asigna su contenido. Si usamos una flechita “<-” o “->” le estamos asignando algo al objeto que apunta la felcha.
x <-24# Asignacion de valor 24 a la variable x para su uso posterior (OBJETO)x/2# Uso posterior de variable u objeto x
[1] 12
x # Imprime en pantalla el valor de la variable u objeto
[1] 24
x <-TRUE# Asigna el valor logico TRUE a la variable x OJO: x toma el ultimo valor que se le asignax
[1] TRUE
1.2 Vectores
Los vectores son uno de los objetos más usados en R.
Dado que poseen elementos, podemos también observar y hacer operaciones con sus elementos, usando “[ ]” para acceder a ellos
y[2] # Acceder al segundo valor del vector y
[1] "Secundaria"
y[3] <-'Preparatoria y más'# Asigna valor a la tercera componente del vectorsex <-1:2# Asigna a la variable sex los valores 1 y 2names(sex) <-c("Femenino", "Masculino") # Asigna nombres al vector de elementos sexosex[2] # Segundo elemento del vector sex
Masculino
2
1.3 Matrices
Las matrices son muy importantes, porque nos permiten hacer operaciones y casi todas nuestras bases de datos tendran un aspecto de matriz.
Algunas funciones básicas son las siguientes. Vamos a ir viendo más funciones, pero para entender cómo funcionan, haremos unos ejemplos y cómo pedir ayuda sobre ellas.
sum(10, 20, 30) # Función suma
[1] 60
rep('R', times =3) # Repite la letra R el numero de veces que se indica
[1] "R" "R" "R"
sqrt(9) # Raiz cuadrada de 9
[1] 3
1.7 Listas
Las listas son conjuntos de objetos y pueden ser de varios tipos
milista<-list(data, m, xx, "a")
milista
[[1]]
entero factor numero cadena
1 1 a 1.0000000 a
2 2 b 0.5000000 b
3 3 c 0.3333333 c
4 4 d 0.2500000 d
[[2]]
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
[[3]]
[1] 10 11 12
[[4]]
[1] "a"
Ojo con los corchetes
milista[[1]]
entero factor numero cadena
1 1 a 1.0000000 a
2 2 b 0.5000000 b
3 3 c 0.3333333 c
4 4 d 0.2500000 d
Si queremos ponerle nombres a los elementos
milista<-list(datos = data, matriz = m, vector = xx,valor ="a")milista
$datos
entero factor numero cadena
1 1 a 1.0000000 a
2 2 b 0.5000000 b
3 3 c 0.3333333 c
4 4 d 0.2500000 d
$matriz
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
$vector
[1] 10 11 12
$valor
[1] "a"
1.8 Ayuda
Pedir ayuda es indispensable para aprender a escribir nuestros códigos. A prueba y error, es el mejor sistema para aprender. Podemos usar la función help, example y ?
help(sum) # Ayuda sobre función sumexample(sum) # Ejemplo de función sum
sum> ## Pass a vector to sum, and it will add the elements together.
sum> sum(1:5)
[1] 15
sum> ## Pass several numbers to sum, and it also adds the elements.
sum> sum(1, 2, 3, 4, 5)
[1] 15
sum> ## In fact, you can pass vectors into several arguments, and everything gets added.
sum> sum(1:2, 3:5)
[1] 15
sum> ## If there are missing values, the sum is unknown, i.e., also missing, ....
sum> sum(1:5, NA)
[1] NA
sum> ## ... unless we exclude missing values explicitly:
sum> sum(1:5, NA, na.rm = TRUE)
[1] 15
1.9 Mi ambiente
Todos los objetos que hemos declarado hasta ahora son parte de nuestro “ambiente” (environment). Para saber qué está en nuestro ambiente usamos el comando
ls()
[1] "data" "m" "mi_dataframe" "mi_matrix" "milista"
[6] "n" "sex" "vector" "x" "xx"
[11] "y" "yy"
gc() # Garbage collection, reporta memoria en uso
used (Mb) gc trigger (Mb) limit (Mb) max used (Mb)
Ncells 650791 34.8 1374034 73.4 NA 1374034 73.4
Vcells 1217089 9.3 8388608 64.0 32768 2486836 19.0
Para borrar todos nuestros objetos, usamos el siguiente comando, que equivale a usar la escobita de la venta de environment
rm(list=ls()) # Borrar objetos actuales
1.10 Directorio de trabajo
Es muy útil saber dónde estamos trabajando y donde queremos trabajar. Por eso podemos utilizar los siguientes comandos para saberlo
Ojo, checa, si estás desdes una PC, cómo cambian las “” por”/” o por “\”
getwd() # Directorio actual
[1] "/Users/anaescoto/Dropbox/2024/r_fe"
#setwd("")# Cambio de directoriolist.files() # Lista de archivos en ese directorio
Los paquetes son útiles para realizar funciones especiales. La especialización de paquetes es más rápida en R que en otros programas por ser software libre.
Vamos a instalar el paquete {foreign}, como su nombre lo indica, nos permite leer elementos “extranjeros” en R.
Para instalar las paqueterías usamos el siguiente comando install.packages() Checa que adentro del paréntesis va el nombre de la librería, con comillas.
Vamos a instalar dos librerías que nos permiten importar formatos.
Este proceso no hay que hacerlo siempre. Si no sólo la primera vez. Una vez instalado un paquete de librería, la llamamos con el comando “library”
library(haven)library(foreign)
{foreing} nos permite leer archivos en formato de dBase, con extensión “.dbf”. Si bien no es un formato muy común para los investigadores, sí para los que generan la información, puesto que dBase es uno de los principales programas de administración de bases de datos.
He puesto un ejemplo de una base de datos mexicana en dbf, en este formato.
ejemplo_dbf<-foreign::read.dbf("datos/ejemplo_dbf.DBF") #checa cómo nos vamos adentro de nuestro directorio
Los :: sirven para tres cosas:
cargar un comando de un paquete, sin haberlo cargado
para identificar de qué paquete viene el comando.
para especificar en caso que hayan dos comandos iguales en un paquete, usar el que tenemos de los paquetes.
1.13 Paquete {pacman}
En general, cuando hacemos nuestro código querremos verificar que nuestras librerías estén instaladas. Si actualizamos nuestro R y Rstudio es probable (sobre todo en MAC) que hayamos perdido alguno.
Este es un ejemplo de un código. Y vamos a introducir un paquete muy útil llamado {pacman}
if (!require("pacman")) install.packages("pacman") # instala pacman si se requiere
Cargando paquete requerido: pacman
pacman::p_load(tidyverse, readxl, writexl, haven, sjlabelled, foreign) #carga los paquetes necesarios para esta práctica
Hay muchos formatos de almacenamiento de bases de datos. Vamos a aprender a importar información desde ellos.
1.14 Estilos
Escribir código tiene su gramática. Por lo general en este curso seguiremos el estilo de Google