2.5 Creación de variables y resumen de conteos

Las funciones mutate, summarise y group_by están cargadas en el paquete tidyverse y son muy importantes al momento de realizar análisis descriptivos simples con las bases de datos de las encuestas de hogares. En primer lugar, la función mutate permite realizar transformaciones de variables en una base de datos. Usualmente, en las encuestas de hogares es necesario crear nuevas variables, por ejemplo, si el hogar está en estado de pobreza extrema o no, la cual se calcula a partir de los ingresos del hogar. La función mutate proporciona una interfaz clara para realizar este tipo de operaciones. A modo de ejemplo, utilizaremos la base de ejemplo para crear una nueva variable llamada logingreso, la cual corresponde al logaritmo natural de los ingresos de la persona dentro del hogar. Los códigos computacionales se muestran a continuación:

datablue2 <- dataingreso1 %>%
  mutate(Logincome = log(Income))

datablue2 %>%
  select(PersonID, Income, Logincome) %>%
  head()
##   PersonID Income Logincome
## 1  idPer01    600   6.39693
## 2  idPer02    600   6.39693
## 3  idPer03    600   6.39693
## 4  idPer01    600   6.39693
## 5  idPer02    600   6.39693
## 6  idPer03    600   6.39693

Si fuera necesario, se puede crear más de una variable en la base de datos. Cabe recalcar que la función mutate reconoce sistemáticamente las variables que van siendo creadas de manera ordenada. A continuación, se presenta un ejemplo de cómo crear más de una nueva variable en la base de datos:

datacat <- datablue2 %>%
  mutate(Income2 = 2 * Income,
         Income4 = 2 * Income2)

datacat %>%
  select(PersonID, Income2, Income4) %>%
  head()
##   PersonID Income2 Income4
## 1  idPer01    1200    2400
## 2  idPer02    1200    2400
## 3  idPer03    1200    2400
## 4  idPer01    1200    2400
## 5  idPer02    1200    2400
## 6  idPer03    1200    2400

Ahora bien, la función summarise crea un nuevo archivo de datos con información resumida de la base de datos. Como se mencionó anteriormente, esta función sirve para resumir o colapsar la información de las filas; toma un grupo de valores como argumento y devuelve un conjunto de valores que resumen la información de los datos en la base. Por ejemplo, con summarise es posible hallar la media de los ingresos, sus percentiles o algunas medidas de dispersión en la base de datos. En el siguiente código computacional se muestra cómo se utiliza la función para conocer el número de envuestas de la base.

data1 %>%
  summarise(n = n()) 
##        n
## 1 150266

Por otro lado, la función group_by permite agrupar información de acuerdo con una o varias variables de interés. Usadas en conjunto, estas dos funciones proporcionan un medio poderoso para obterner infomración desagregada. El siguiente código permite generar el número de registros en cada una de las regiones de BigCity. El comando group_by agrupa los datos por región, el comando summarise hace los cálculos requeridos y el comando arrange ordena los resultados:

data1 %>%
  group_by(Region) %>%
  summarise(n = n()) %>%
  arrange(desc(n))
## # A tibble: 5 × 2
##   Region        n
##   <fct>     <int>
## 1 Oriente   39160
## 2 Occidente 33868
## 3 Centro    25944
## 4 Sur       25898
## 5 Norte     25396

Por ejemplo, para generar el número de encuestas efectivas discriminado por el sexo del respondiente, es posible utilizar el siguiente código computacional:

data1 %>%
  group_by(Sex) %>%
  summarise(n = n()) %>%
  arrange(desc(n)) 
## # A tibble: 2 × 2
##   Sex        n
##   <chr>  <int>
## 1 Female 79190
## 2 Male   71076

Si ahora se desea realizar la consulta del número de encuestas efectivas por área geográfica, se realiza de la siguiente manera:

data1 %>%
  group_by(Zone) %>%
  summarise(n = n()) %>%
  arrange(desc(n))
## # A tibble: 2 × 2
##   Zone      n
##   <chr> <int>
## 1 Urban 78164
## 2 Rural 72102

Por último, resulta fundamental categorizar variables como la edad para agilizar y estandarizar la revisión de los datos en la base. En este escenario, optaremos por emplear la función case_when, la cual posibilita la evaluación de distintas condiciones para una variable particular.

data1 <- data1 %>%
  mutate(
    CatAge = case_when(
      Age <= 5 ~ "0-5",
      Age <= 15 ~ "6-15",
      Age <= 30 ~ "16-30",
      Age <= 45 ~ "31-45",
      Age <= 60 ~ "46-60",
      TRUE ~ "Más de 60"
    ),
    CatAge = factor(
      CatAge,
      levels = c("0-5", "6-15", "16-30",
                 "31-45", "46-60", "Más de 60"),
      ordered = TRUE
    )
  )