Práctica 2. Conocimientos básicos de programación en R

Sesión del jueves, 13 de abril de 2023

Presentación

0. Objetivo de la práctica

El objetivo de esta guía práctica es introducirnos en los procedimientos básicos del uso del lenguaje y ambiente R.

En detalle, aprenderemos:

  1. Herramientas básicas de programación en R

  2. Operadores en R

  3. Tipos de datos

1. Conocimientos básicos de programación

Revisemos algunos conocimientos básicos para la programación en R. Pero antes, tengamos dos cosas en mente:

  • Primero, ¿qué es codificar?, en programación codificar corresponde a un proceso de entrega de instrucciones en un lenguaje específico, siguiendo un orden lógico y coherente.

  • Segundo, de aquí en adelante nos manejaremos con una máxima en el curso; existe un acuerdo implícito entre tú y R: R hará todos los cálculos por ti, pero en cambio debes dar las instrucciones con total precisión.

1.1 R como calculadora

Uno de los usos más sencillos y que están a la base de R, es usarlo como una calculadora.

5+5
[1] 10
25/5
[1] 5
2*2
[1] 4
27-2
[1] 25

Como podrás ver, el resultado de estas instrucciones aparecen como un [1] en la consola. También podemos hacer operatorias más complejas y con más cálculos.

12*(7+2)+(45-32)+8
[1] 129
22^2 - 2^2
[1] 480
1/200 * 30
[1] 0.15

1.2 Un lenguaje orientado a objetos

R es un lenguaje de programación orientado a objetos. ¿Qué significa eso?, implica que podemos crear elementos dentro del ambiente de R, a los cuales les asignaremos información que quedará almacenada, información que puede ir desde números, palabras, cálculos hasta grandes bases de datos.

Todas las instrucciones en R en las que crees objetos, es decir, instrucciones de asignación, tendrán la misma estructura:

nombre_objeto <- valor

El asignador <- se utiliza para crear objetos y forma parte de uno de los operadores usados en R.

Los elementos que podemos asignar a objetos son múltiples, como números, palabras acompañadas siempre de corchetes " " y vectores que corresponden a un conjunto o secuencia de elementos del mismo tipo definidos por la funcion de concatenar = c().

Veamos un ejemplo creando objetos:

x <- 4 # asignar

x # ejecutar
[1] 4
y <- "Hola mundo" # los carácteres alfabéticos siempre van acompañados de corchetes

y 
[1] "Hola mundo"

¿Y concatenando? Hacemos un vector.

edad <- c(18,22,36,19,35) # concatenar (variable de razon)

edad
[1] 18 22 36 19 35
genero <- c(3,1,1,2,3) # masculino = 1; femenino = 2; transgenero = 3 (variable nominal)

genero 
[1] 3 1 1 2 3
gse <- c("ABC1", "C2", "E", "AbC1", "E")  # tambíen se pueden usar carácteres (variable ordinal)

gse
[1] "ABC1" "C2"   "E"    "AbC1" "E"   

¡Hagamos una pequeño reto!: ¿Cuál es el valor de a y b? Si a <- 5; b <- a; a <- 4

a <- 5
b <- a
a <- 4

print(a) # imprimir en la consola
[1] 4
print(b)
[1] 5
a + 10
[1] 14

Ahora, sea z = a^2 ¿qué resultado obtenemos de a * b + z?

z <- a^2 # asignar

a * b + z
[1] 36

Además de lo anterior, en R es fundamental la creación de data.frames. Un Data.frame es una estructura de datos de dos dimensiones (columnas y filas), donde las columnas pueden ser de diferente naturaleza, pero deben tener el mismo largo. A partir de ella agrupamos variables en una matriz, o sea, construimos una base de datos. Es como “pegar” las columnas (variables) una al lado de otra.

Creemos un data.frame con los vectores que ya creamos antes.

base1 <- data.frame(genero, gse, edad) # Resulta como objeto de "datos" en
                                       # entorno.

base1
  genero  gse edad
1      3 ABC1   18
2      1   C2   22
3      1    E   36
4      2 AbC1   19
5      3    E   35

Como puedes ver, para crear el data.frame usamos la función que lleva el mismo nombre, colocando dentro del paréntesis los vectores que creamos anteriormente: data.frame(mis_vectores).

Ahora, creemos un data.frame desce cero. En este ejemplo, crearemos los vectores dentro de la función data.frame().

# Ejemplo de como crear un data.frame desde 0: 

base2 <- data.frame(Sexo=c("H","M","H","M","H","M"),
                    Estatura=c(1.83,1.76,1.82,1.60,1.90,1.66),
                    Peso=c(67,58,66,48,75,55))

head(base2)  # Me permite visualizar las primeras filas
  Sexo Estatura Peso
1    H     1.83   67
2    M     1.76   58
3    H     1.82   66
4    M     1.60   48
5    H     1.90   75
6    M     1.66   55

2. Operadores en R

Antes de trabajar con datos, debemos conocer el concepto de operadores. Estos símbolos no son de uso exclusivo en R, pero no todos tienen el mismo significado que en otros softwares.

Los operadores son símbolos que permiten, en los distintos procedimientos de procesamiento, simplificar procesos. Por ejemplo, serán útilizados cuando filtremos nuestros datos para personas de ciertas categorías, cuando calculemos variables nuevas (de manera aritmética o condicional) o, simplemente, cuando queramos hacer procesos “concatenados”.

¡Veamos algunos ejemplos!

20 == 5 # igualdad
[1] FALSE
30 >= 14 # mayor o igual que
[1] TRUE
22 <= 2 # menor o igual que
[1] FALSE
25 != 10 # no es igual a
[1] TRUE
p = 10; y = 5; p <= y # operatoria en objetos
[1] FALSE

3. Tipos de datos

3.1 ¿Qué son los tipos de datos?

En R, al igual que en la mayoría de lenguajes de programación, contamos con datos de diversos tipos, en razón de los cuales podemos realizar determinados procedimientos de tratamiento o análisis.

Los tipos de datos están íntimamente relacionados con el nivel de medición de las variables a las que corresponden. Como viste en clases, la teoría de los niveles de medición contempla cuatro tipos:

3.2 ¿Qué tipos de datos encontramos en R?

Para responder esta pregunta, ¡metamos nuestras manos en los datos!. En esta oportunidad trabajaremos sobre un subset de datos del Modulo de Desigualdad Social de la encuesta International Social Survey Programme del 2019. Esta base la descargaremos directamente desde internet por esta vez (en futuras sesiones aprenderemos cómo cargar bases de datos).

#cargamos la base de datos desde internet

load(url("https://github.com/Andreas-Lafferte/descriptiva/blob/main/data/db-proc.RData?raw=true"))

head(rand_df) # ver primeros casos de la base
       pais edad   sexo          ideologia percepcion_conflictos
1     Suiza   23 Hombre          Izquierda                     2
2     Chile   27  Mujer Sin identificación                     2
3     Rusia   43  Mujer Sin identificación                     1
4 Finlandia   71  Mujer Sin identificación                     1
5     Japon   54  Mujer          Izquierda                     2
6  Lituania   67  Mujer Sin identificación                     1

I) Character

Los datos character están directamente asociados a las variables cualitativas (o categóricas). Generalmente suelen ser variables de texto abierto, como es el caso de la variable pais, que detalla el país de procedencia de la persona encuestada.

Para conocer cuál es el tipo de variable en R, utilizamos el comando class(), y para detallar dentro de la base de datos cuál es la variable de interés, utilizamos el símbolo $ posterior a la base de datos:

class(rand_df$pais) # siempre es la misma estructura = base$variable
[1] "character"

Sin embargo, estas variables no tienden a ser las mejores a la hora de presentar nuestros resultados. Como solución, tenemos las variables de tipo Factor.

II) Factor

Las variables de tipo factor son ideales para trabajar con variables de tipo nominal u ordinal. Esto es así debido a que permiten establecer un orden entre las categorías de la variable, lo cual es fundamental si trabajamos, por ejemplo, con variables nominales como el sexo de los encuestados, o si trabajamos con variables ordinales como su ideología política.

class(rand_df$sexo)
[1] "factor"
class(rand_df$ideologia)
[1] "factor"

III) Numeric

Las variables de tipo numeric son variables de tipo númerica, las cuales pueden ser intervales o de razón. Así, por ejemplo, cuando trabajamos con variables de razón trabajamos con variables como el número de hijos o la edad (aunque sería extraño encuestar a alguien con 0 años).

class(rand_df$edad)
[1] "numeric"

Resumen

Hoy aprendimos distintas herramientas básicas para utilizar el lenguaje y ambiente R. Como resumen:

  • Utilizar R como calculadora, su lógica orientada a objetos creando objetos, vectores y data.frames

  • Operadores en R

  • Tipos de datos en R como variables cualitativas (character o factor) y cuantitativas (numeric)

Video de clase