0. Definición del ambiente de trabajo.

Al comenzar a trabajar con R y RStudio se debe preparar el “ambiente de trabajo”, que supone implementar algunos comandos previamente sobre distintos aspectos: i. idioma del ambiente, ii. directorio de trabajo, iii. librerías de apoyo.

  1. El idioma nativo de R y R Studio es el inglés, de manera que habrá algunos caracteres de otros idiomas que no se puedan leer sin antes modificar la opción del idioma. Para ajustar al idioma español, y permitirle al programa la detección de caracteres como “ñ” o acentos, entre otros, se debe especificar mediante la siguiente indicación:
Sys.setlocale("LC_ALL", "Spanish")
## Warning in Sys.setlocale("LC_ALL", "Spanish"): OS reports request to set locale
## to "Spanish" cannot be honored
## [1] ""
Sys.setlocale("LC_ALL", "es_MX")
## Warning in Sys.setlocale("LC_ALL", "es_MX"): OS reports request to set locale
## to "es_MX" cannot be honored
## [1] ""
  1. Posteriormente es importante activar las librerías de apoyo que se utilizarán al manipular los datos, así como para realizar diversos análisis específicos de los datos. Este proceso de activación requiere dos pasos previos:
  1. el primero consiste en instalar las paqueterías en caso de que no se encuentren referidas en el listado de los paquetes (se encuentra en la pestaña denominada “packages”, en la parte superior de la ventana de los “files, plots, packages, help, viewer”) y,

  2. el segundo se centra en activar una librería previamente instalada.

  3. La instalación de las paqueterías se realiza por defecto cuando se va a utilizar por primera vez ésta dentro del ambiente de trabajo de R y R Studio, y ello supone que no se encuentra referida en el listado de las librerías o paquetes de R Studio. Para instalar una librería se utiliza el script install.packages(), y dentro de los paréntesis se escribe el nombre entrecomillado de la librería; en este caso se instalarán las librerías “tidyverse” y “easypackages”:

install.packages("easypackages")
install.packages("tidyverse")

Si R no arroja ningún mensaje de error - en letras de color rojo- al final del proceso y si, además, ahora aparece el nombre de la librería en el listado de paquetes, esto refiere que la paquetería se ha instalado correctamente. Sin embargo aún no está activada.

  1. Para poder utilizar una librería, ésta debe encontrarse activada. La manera manual de identificar esto es observando la casilla de verificación que se encuentra a la izquierda del nombre de la librería, dentro de la pestaña del listado de paquetes (“packages”). Si la casilla cuenta con una marca o “paloma”, refiere que se encuentra activa. En caso contrario, ésta debe activarse y para ello se utiliza el comando library(), y dentro del paréntesis se escribe el nombre de la librería sin entrecomillar.
library(easypackages)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Si al final del proceso, en la consola no se observa ningún mensaje de error (en letras de color rojo), entonces se considera que la librería se ha activado y, en consecuencia, aparecerá marcada la casilla de verificación a un costado izquierdo del nombre de la librería en el listado de paquetes.

Pero en el caso de querer instalar y activar diversas librerías simultáneamente, se puede hacer uso de una librería alternativa denominada easypackages(), que se activó previamente:

Posteriormente se crea un objeto con el nombre de las librerías a cargar, para lo que utilizaremos los siguientes: haven que permite abrir data frames con diversos formatos, tidyverse de la que utilizaremos la librería dplyr para manipular filas y columnas de un data frame y openslxs para abrir data frames en formato “.xlsx”.

paquetes <- c("haven","tidyverse", "dplyr", "openxlsx") #objeto con el nombre de las librerías

Después se activan dichas librerías mediante el script libraries(), que es parte de “easypackages”:

libraries(paquetes)
## Loading required package: haven
## Loading required package: openxlsx
## All packages loaded successfully

Para identificar si las librerías se encuentran activas, se pueden observar la casillas marcadas en el listado de las librerías instaladas dentro de la pestaña de “Packages”.

1. Apertura de un data frame.

Distintas bases o matrices de datos previamente creadas suelen guardarse en diversos formatos, derivados de los programas en que fueron elaboradas.

1.1. Archivos en formato “.csv” y “.txt”.

Algunos de los formatos más comunes en que se encuentran estas matrices de datos o Data Frames (DF) suelen ser aquellos cuya terminación es “nombre.csv” (comma separated values) o a manera de tablas texto (.txt) en formato procesador de texto. Para abrir algún archivo DF de estos tipos en R, R Studio cuenta con opciones base que se pueden crear como “objetos”, y además se mostrarán en el “ambiente” de R Studio. Antes de importarlos, estOs DF se deben encontrar ubicados en el directorio de trabajo pre definido.

El comando (o script) read.csv() se utiliza para abrir los DF guardados en formato “.csv”. Y dicho comando requiere, al menos, de dos argumentos: i. la ruta de acceso al archivo y, ii. “header” con valores de TRUE o FALSE, para indicar si la primer fila del archivo contiene los nombres de las variables.

datos_covid <- read.csv("/Users/gustavo/Dropbox/R/200613COVID19MEXICO.csv", header = TRUE) #ruta de acceso a los datos, 'header = TRUE' en caso de que el archivo cuente con nombres de las variables.

En el caso de archivos que contienen información de un DF que fueron guardados en formato de texto (“nombre.txt”), se pueden importar a R a través del comando read.table(), que se integra por otros argumentos adicionales: i. ruta de acceso al archivo, ii. header, con valores TRUE o FALSE, iii. sep =, que se refiere al caracter que sirve para separar los datos, y iv. dec = “.”, que señala el caracter que sirve para identificar los valores decimales.

data2 <- read.table("/Users/gustavo/Dropbox/R/datos_computos_distritos_diputado.txt", header = TRUE, sep = "|", dec = ".")

1.2. Archivos en formato “.xlsx”.

También existen otros formatos en que se suelen guardar los DF, los que se pueden abrir desde R y R Studio para lo que se requiere el uso de librerías adicionales. En el caso de archivos con formato “nombre.xlsx” o excel, existen las siguientes alternativas:

  1. Comando de sistema base read_xlsx(), con los argumentos: i. sheet = 1, y ii. col_names, con valores TRUE o FALSE.
library(readxl) #solo permite leer archivo xls pero no sobreescribirlos
data3 <- read_xlsx("/Users/gustavo/Dropbox/R/Base_datos_Informe_Pais.xlsx", sheet = 1, col_names = TRUE)
  1. Una opción alternativa para abrir data frames con formato “.xlsx” es a partir de la librería openxlsx(), usando el comando read.xlsx(). Este comando requiere los argumentos: i. sheet = 1, ii. startRow = 1, iii. colNames =, con valores TRUE o FALSE, rowNames =, con valores TRUE o FALSE:
library(openxlsx) #carga de librería 
data4 <- openxlsx::read.xlsx("/Users/gustavo/Dropbox/R/Base_datos_Informe_Pais.xlsx", sheet = 1, startRow = 1, colNames = TRUE, rowNames = FALSE) #apertura del archivo

1.3. Archivos en formato SPSS y STATA.

Otro de los formatos comunes en que se suelen archivar los DF suelen ser aquellos correspondientes a los programas de análisis estadístico STATA (.dta) y SPSS (.sav). Para ello se utiliza la librería haven(), previamente instalada. Con esta librería, la importanción de datos a R respetará los caracteres especiales de la información así como la construcción de variables especiales.

En el caso de los data frame construidos desde el programa STATA, cuya terminación es “.dta”, se pueden importar los datos de la siguiente manera:

data5 <- read_dta("/Users/gustavo/Dropbox/R/Latinobarometro_2018_Esp_Stata_v20190303.dta")

Para los casos de los archivos que fueron construidos desde el programa SPSS y cuya terminación es “.sav”, existe la siguiente opción para su apertura:

data6 <- read_sav("/Users/gustavo/Dropbox/R/Latinobarometro_2018_Esp_Spss_v20190303.sav")

2. Exploración de data frame y sus variables.

Una vez que se cuenta con un data frame abierto en el ambiente de R Studio, es pertinente identificar el tipo o clase de objeto de la que se trata.

class(datos_covid)
## [1] "data.frame"

Además es importante identificar el tamaño del data frame, mediante las dimensiones del mismo. Esto se presenta como: i. número de filas, ii. número de columnas.

dim(datos_covid)
## [1] 401755     35

También es muy importante identificar el nombre de las variables o columnas que integran al data frame.

names(datos_covid)
##  [1] "FECHA_ACTUALIZACION" "ID_REGISTRO"         "ORIGEN"             
##  [4] "SECTOR"              "ENTIDAD_UM"          "SEXO"               
##  [7] "ENTIDAD_NAC"         "ENTIDAD_RES"         "MUNICIPIO_RES"      
## [10] "TIPO_PACIENTE"       "FECHA_INGRESO"       "FECHA_SINTOMAS"     
## [13] "FECHA_DEF"           "INTUBADO"            "NEUMONIA"           
## [16] "EDAD"                "NACIONALIDAD"        "EMBARAZO"           
## [19] "HABLA_LENGUA_INDIG"  "DIABETES"            "EPOC"               
## [22] "ASMA"                "INMUSUPR"            "HIPERTENSION"       
## [25] "OTRA_COM"            "CARDIOVASCULAR"      "OBESIDAD"           
## [28] "RENAL_CRONICA"       "TABAQUISMO"          "OTRO_CASO"          
## [31] "RESULTADO"           "MIGRANTE"            "PAIS_NACIONALIDAD"  
## [34] "PAIS_ORIGEN"         "UCI"

Otra manera de identificar los nombres y tipos de variables que integran al data frame es a través de la revisión de la estructura del data frame.

str(datos_covid)
## 'data.frame':    401755 obs. of  35 variables:
##  $ FECHA_ACTUALIZACION: chr  "2020-06-13" "2020-06-13" "2020-06-13" "2020-06-13" ...
##  $ ID_REGISTRO        : chr  "04f3dd" "1b7c4b" "03f6dd" "09e350" ...
##  $ ORIGEN             : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ SECTOR             : int  3 3 4 4 4 4 3 4 4 4 ...
##  $ ENTIDAD_UM         : int  25 27 9 15 15 30 27 15 15 7 ...
##  $ SEXO               : int  2 1 1 1 2 1 2 2 1 1 ...
##  $ ENTIDAD_NAC        : int  25 27 9 15 15 30 27 15 9 7 ...
##  $ ENTIDAD_RES        : int  25 27 15 15 15 30 27 15 15 7 ...
##  $ MUNICIPIO_RES      : int  6 5 58 37 122 193 13 109 54 97 ...
##  $ TIPO_PACIENTE      : int  1 2 1 1 2 2 1 2 1 1 ...
##  $ FECHA_INGRESO      : chr  "2020-05-11" "2020-05-22" "2020-04-17" "2020-04-22" ...
##  $ FECHA_SINTOMAS     : chr  "2020-05-09" "2020-05-20" "2020-04-14" "2020-04-22" ...
##  $ FECHA_DEF          : chr  "9999-99-99" "9999-99-99" "9999-99-99" "9999-99-99" ...
##  $ INTUBADO           : int  97 2 97 97 2 2 97 2 97 97 ...
##  $ NEUMONIA           : int  2 2 2 2 2 2 2 1 2 2 ...
##  $ EDAD               : int  27 52 55 38 59 67 36 27 39 30 ...
##  $ NACIONALIDAD       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ EMBARAZO           : int  97 2 2 2 97 2 97 97 2 2 ...
##  $ HABLA_LENGUA_INDIG : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ DIABETES           : int  2 1 1 2 2 1 2 2 2 2 ...
##  $ EPOC               : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ ASMA               : int  2 2 2 2 2 1 2 1 2 2 ...
##  $ INMUSUPR           : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ HIPERTENSION       : int  2 1 1 2 2 2 2 2 2 2 ...
##  $ OTRA_COM           : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ CARDIOVASCULAR     : int  2 1 2 2 2 2 2 2 2 2 ...
##  $ OBESIDAD           : int  2 2 1 2 2 2 2 2 2 1 ...
##  $ RENAL_CRONICA      : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ TABAQUISMO         : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ OTRO_CASO          : int  1 2 99 99 99 99 1 99 99 99 ...
##  $ RESULTADO          : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ MIGRANTE           : int  99 99 99 99 99 99 99 99 99 99 ...
##  $ PAIS_NACIONALIDAD  : chr  "México" "México" "México" "México" ...
##  $ PAIS_ORIGEN        : chr  "99" "99" "99" "99" ...
##  $ UCI                : int  97 2 97 97 2 2 97 2 97 97 ...

O también se puede dar un vistazo a las variables que integran al data frame a partir de solicitarle al programa que arroje los primeros seis renglones de cada columna.

head(datos_covid)
##   FECHA_ACTUALIZACION ID_REGISTRO ORIGEN SECTOR ENTIDAD_UM SEXO ENTIDAD_NAC
## 1          2020-06-13      04f3dd      2      3         25    2          25
## 2          2020-06-13      1b7c4b      2      3         27    1          27
## 3          2020-06-13      03f6dd      2      4          9    1           9
## 4          2020-06-13      09e350      2      4         15    1          15
## 5          2020-06-13      187fc7      2      4         15    2          15
## 6          2020-06-13      07b426      2      4         30    1          30
##   ENTIDAD_RES MUNICIPIO_RES TIPO_PACIENTE FECHA_INGRESO FECHA_SINTOMAS
## 1          25             6             1    2020-05-11     2020-05-09
## 2          27             5             2    2020-05-22     2020-05-20
## 3          15            58             1    2020-04-17     2020-04-14
## 4          15            37             1    2020-04-22     2020-04-22
## 5          15           122             2    2020-04-21     2020-04-21
## 6          30           193             2    2020-05-02     2020-04-22
##    FECHA_DEF INTUBADO NEUMONIA EDAD NACIONALIDAD EMBARAZO HABLA_LENGUA_INDIG
## 1 9999-99-99       97        2   27            1       97                  2
## 2 9999-99-99        2        2   52            1        2                  2
## 3 9999-99-99       97        2   55            1        2                  2
## 4 9999-99-99       97        2   38            1        2                  2
## 5 9999-99-99        2        2   59            1       97                  2
## 6 9999-99-99        2        2   67            1        2                  2
##   DIABETES EPOC ASMA INMUSUPR HIPERTENSION OTRA_COM CARDIOVASCULAR OBESIDAD
## 1        2    2    2        2            2        2              2        2
## 2        1    2    2        2            1        2              1        2
## 3        1    2    2        2            1        2              2        1
## 4        2    2    2        2            2        2              2        2
## 5        2    2    2        2            2        2              2        2
## 6        1    2    1        2            2        2              2        2
##   RENAL_CRONICA TABAQUISMO OTRO_CASO RESULTADO MIGRANTE PAIS_NACIONALIDAD
## 1             2          2         1         1       99            México
## 2             2          2         2         1       99            México
## 3             2          2        99         1       99            México
## 4             2          2        99         1       99            México
## 5             2          2        99         1       99            México
## 6             2          2        99         1       99            México
##   PAIS_ORIGEN UCI
## 1          99  97
## 2          99   2
## 3          99  97
## 4          99  97
## 5          99   2
## 6          99   2

2.1. Exploración a partir de variables seleccionadas.

Otra manera de explorar un data frame es a partir de solicitar al programa que muestre variables seleccionadas, a diferencia de las opciones anteriores en donde se arrojaron todas las variables en una misma indicación. La manera más sencilla de acceder a una de las variables (columnas) contenidas dentro de un data frame es a partir del operador “$”, que se posiciona después de indicar el nombre del objeto o data frame analizado y, posteriormente, se introduce el nombre de la variable de interés.

class(datos_covid $ SEXO) #tipo de variable
## [1] "integer"
head(datos_covid $ SEXO) #primeros seis valores
## [1] 2 1 1 1 2 1

Tomando en consideración que un data frame es un conjunto de filas y columnas, en en cada intersección se encuentran las observaciones correspondientes a cada par de (fila, columna), en R también se puede acceder ya sea a una o un conjunto de filas o columnas, o celdas específicas. Para ello se utiliza el signo [f, c ] después del objeto. Por ejemplo:

datos_covid_filas_1_50 <- datos_covid[c(1 : 50), ] #acceso a las filas 1 a 50 del data frame, incluyendo todas las columnas

Acceso a columnas seleccionadas para todas las filas:

datos_covid_columnas <- datos_covid[ , c(2, 3, 4, 8, 10)] #acceso a las columnas 2, 3, 4, 8 y 10 del data frame para todas las filas

Otra manera de seleccionar algunos casos específicos es mediante una extracción lógica de elementos con combinaciones condicionadas por “y” u “o”:

Casos con intersección de características (“A y B”):

datos_cond_y <- datos_covid[datos_covid $ EDAD < 70 &
                              datos_covid $ SEXO == 1, ] #selección de casos que cumplen 2 condiciones simultáneamente: personas con edad menor a 70 años Y que son hombres (SEX = 1) para todas las filas

Casos disjuntos a partir de ciertas características (“A o B”):

datos_cond_o <- datos_covid[datos_covid $ EDAD < 35 |
                              datos_covid $ EDAD > 50, ] #selección de casos que cumplen una de dos condiciones posibles: personas menores de 35 años o mayores de 50 para todas las filas

Otra manera para acceder a diversas variables seleccionadas se apoya en la librería dplyr -que se instaló previamente-, y es una de las opciones más útiles pues cuenta con una serie de instrucciones para lograrlo, que se irán revisando poco a poco.

library(dplyr) #instalación de la librería

Una manera de acceder a la exploración de variables específicas, consiste en la selección de las variables de interés a partir de la opción select(), que forma parte de la librería dplyr(). Un aspecto nuevo, y que será muy útil posteriormente, consiste en la instrucción %>% (pipe). Esta instrucción permite vincular otras instrucciones mientras se avanza de izquierda a derecha en el script, y se lee como then o entonces.

datos_covid %>% #objeto o data frame
  select(SEXO, INTUBADO, EDAD, RESULTADO) %>% #seleccionar variables de interés
  glimpse #vistazo a tipo y valores de variables seleccionadas
## Rows: 401,755
## Columns: 4
## $ SEXO      <int> 2, 1, 1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, …
## $ INTUBADO  <int> 97, 2, 97, 97, 2, 2, 97, 2, 97, 97, 2, 97, 2, 97, 97, 2, 97,…
## $ EDAD      <int> 27, 52, 55, 38, 59, 67, 36, 27, 39, 30, 42, 37, 41, 33, 44, …
## $ RESULTADO <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …

2.2. Manipulación y transformación de variables de data frame.

La librería dplyr cuenta con una serie de funciones básicas que permiten manipular tanto las filas como las columnas de un data frame, pues en ocasiones se requiere ajustar la información contenida en la matriz de datos a las necesidades de la investigación en turno. Las funciones básicas que incluye dplyr son:

  1. filter(): devuelve un conjunto de filas según una o varias condiciones lógicas.
covid_hombre <- datos_covid %>%
  filter(SEXO == 2 & ORIGEN == 1) #se generó un objeto nuevo que contiene solo datos de todas las variables para casos de hombre solamente y de origen USMER.
  1. arrange(): reordena filas de un data frame.
datos_covid <- datos_covid %>%
  arrange(EDAD) #se ordenaron los casos de manera ascendente a partir del criterio de EDAD
  1. select(): devuelve un conjunto de columnas seleccionadas.
covid_edad_sexo <- datos_covid %>%
  select(ORIGEN, SEXO, INTUBADO, EDAD, RESULTADO, UCI)
  1. mutate(): añade nuevas variables / columnas o transforma variables existentes.
  • Una primera manera de transformar una variable consiste en aplicar una función matemática a una variable existente:
covid_hombre <- covid_hombre %>%
  mutate(edad_cuad = EDAD ^ 2) #elevación al cuadrado de la EDAD
  • Otra manera de transformar una variable consiste en generar grupos mediante una estructura lógica:
covid_hombre <- covid_hombre %>%
  mutate(tipo_sector = ifelse(SECTOR < 6, 
                              "un tipo", #todos los valores menores a 6
                              "segundo tipo")) #todos los valores restantes o de 6 en adelante
  • Una tercera alternativa para transformar una variable consiste en la recodificación de valores (numéricos o caracteres) hacia otros valores deseados:
covid_hombre <- covid_hombre %>% 
  mutate(sex_rec = recode(SEXO, 
                         `1`= 1,
                         `2`= 0))
  1. summarise(): genera una tabla con resúmenes estadísticos de diferentes variables.
datos_covid %>%
  group_by(SEXO) %>% # agrupa los casos a partir de las categorías dentro de la variable SEXO
  summarise(media = mean(EDAD), desviación = sd(EDAD), cantidad = n())
## # A tibble: 2 × 4
##    SEXO media desviación cantidad
##   <int> <dbl>      <dbl>    <int>
## 1     1  42.0       16.4   197301
## 2     2  43.2       17.0   204454
  1. sample_n(): genera muestras aleatorias a partir de los datos / filas de un data frame.
submuestra <- datos_covid %>%
  sample_n(500, replace = FALSE) #tamaño de la muestra, selección de casos entre las muestras
  1. rename(): renombra variables existentes en un data frame.
submuestra <- datos_covid %>%
  rename(tipo_sector = SECTOR)

3. Guardar un DF y los códigos utilizados

Para guardar datos se pueden usar los comandos:

write.table() y write.csv() -los objetos tipo DF o matriz podemos guardarlos, uno a la vez, en un archivo externo manteniendo su estructura-, con los siguientes argumentos:

donde «x» es el objeto que queremos escribir (en formato matriz o data.frame), en «file» especificamos la ruta y nombre del documento que deseamos abrir/guardar, aquí «append» solo relevante si el archivo es una cadena de caracteres (si es TRUE, la salida se agrega al archivo, si es FALSE se destruye cualquier archivo existente del nombre), «quote» sirve para indicar si queremos comillas a los nombres (TRUE/FALSE o índices), con «sep» indicamos el tipo de separador de los datos («,», «;», «, etc.), con «na» indicamos cómo vienen representados los datos ausentes (NA, algunos usan los valores 999 o 9999, pero no lo recomiendo), la opción «dec» nos permite especificar cómo están dados los decimales (con «,» o «.»;recuerden que R utiliza punto y Excel comas), con «col.names» o «row.names» indicamos los nombres de columnas y filas que queremos escribir, con «na.strings» podemos indicar qué valor o carácter va a especificar los valores ausentes o NA.

write.table(datos_covid, file = "datos_covid1.txt", row.names = TRUE) #guarda un archivo en formato ".txt"
write.csv(datos_covid, file = "datos_covid2.csv", row.names = TRUE) #guarda un archivo en formato ".csv"
write.xlsx(datos_covid, file = "datos_covid3.xlsx", row.names = TRUE) #guarda un archivo en formato ".xls"
## Warning: Please use 'rowNames' instead of 'row.names'

4. Ejercicio

  1. Abrir en R Studio la base de datos sobre enfermos infectados por COVID-19 en México que genera la Dirección General de Epidemiología de la Secretaría de Salud del gobierno federal. Acá pueden descargar una versión de la base Base Covid-19.

  2. Explorar la estructura de la base para identificar: i. la cantidad de variables que contiene, ii. la manera en que están codificadas las variables, iii. identificar si los tipos de variables corresponden con las codificaciones de las variables en la base.

  3. Agrupar casos según la variable de “RESULTADO”, y calcular el promedio y desviación estándar o típica de la edad de los casos, además de la cantidad de casos por cada grupo.

  4. Transformar la variable “SECTOR” y reducirla a dos categorías: i. sector público, ii. sector privado, y calcular la proporción de casos según el “RESULTADO”.