Sesión 1 - Parte 2

source('global.R')

Ejercicio: Creación de un script de R Markdown

Para iniciar esta segunda parte, vamos a realizar un nuevo experimento. A diferencia de los archivos .R (que son puras instrucciones), el formato R Markdown (.Rmd) es el estándar para crear informes reproducibles. Este tipo de archivos combinan texto explicativo (en formato Markdown) con trozos de código (chunks) que se ejecutan al generar el documento.

Os animo a explorar las plantillas que RStudio ofrece:

  • File → New File → R Markdown → Document → HTML
  • File → New File → R Markdown → Presentation → ioslides

Consejo: Intentad “tejer” (Knit) el documento resultante para ver cómo el código y el texto se convierten en un informe profesional.


Practicando con R Markdown …

Ejercicio: script 05: Carga de datos

Aunque RStudio cuenta con menús visuales para importar datos, en el análisis profesional preferimos cargar los datos mediante scripts. Esto garantiza que el proceso sea trazable y reproducible. Utilizaremos readr para archivos de texto y expss para archivos .sav de SPSS.

Carga desde CSV

# Import dataset from URL
df <- suppressMessages(read_csv("https://drive.google.com/uc?export=download&id=1OStFMmg5fzIpfTZnzX9Ql8sefN7se5SW"))

df
# A tibble: 6 × 11
      x     y     z   low  high value name  color   from  to    weight
  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr>   <chr> <chr>  <dbl>
1     0   1.6 -34    -6     9.2     1 lemon #d35400 lemon olive      1
2     1  11   -23     6.7  15.3    10 nut   #2980b9 lemon guava      1
3     2  20.4   6.8   2.8  38      19 olive #2ecc71 lemon fig        1
4     3  22.1  32.3  19.4  24.8    21 guava #f1c40f nut   olive      1
5     4  15.4  27.7  12.1  18.7    14 fig   #2c3e50 olive pear       2
6     5   7.4   3.2 -11.8  26.6     6 pear  #7f8c8d guava pear       2

Carga desde ficheros SAV

# Import SPSS file from URL
data <- suppressMessages(read_spss("https://drive.google.com/uc?export=download&id=11q4pg2iWwWdV9mk5P44ejoAcj5CJEfJM"))

# Preview the first and last 5 rows
head(data, 5)
  ESTU CUES CCAA PROV MUN TAMUNI CAPITAL DISTR SECCION ENTREV OLA P1 P2 P3 P401
1 3192    1   16    1  59      5       1     0       0      0   3  9  3  6    1
2 3192    2   16    1  59      5       1     0       0      0   3  2  2  7    1
3 3192    3   16    1  59      5       1     0       0      0   3  2  2  8    1
4 3192    4   16    1  59      5       1     0       0      0   3  9  2  8    1
5 3192    5   16    1  59      5       1     0       0      0   3  3  2  7    1
  P402 P403 P404 P501 P502 P503 P504 P6 P6A01 P6A02 P6B P6C P6D P7 P7A P801
1    1    1    1    7    7    8    8  1     2     0   1   2   3  3   1    1
2    1    1    1    7    7    7    7  1     1     0   0   2   3  1  NA    1
3    1    1    1    8    8    8    8  1     2     0   2   2   2  3   1    1
4    1    1    1    9    9    9    1  1     1     0   0   1   3  2  NA    1
5    1    1    1    9    5    8    8  1     2     0   1   2   3  4   1    1
  P802 P803 P8A01 P8A02 P8A03 P8B01 P8B02 P8B03 P901 P902 P903 P904 P905 P906
1    2    1     2     0     1    96    96     8    7    7    7    7    6    6
2    1    1     2     2     1    96    96     7    7    7    7    7    7    7
3    1    1     1     2     1    10    96    10    8    8    8    8    6    8
4    2    1     1     0     2     9    96    96   10   98   10   98    5    7
5    1    1     2     2     2    96    96    96    8    8    9    9    6    8
  P907 P908 P1001 P1002 P1003 P11 P11A01 P11A02 P11B P11C P11D P12 P12A01
1    6    7     3     2     3   2     96     96    0    0    0   2     96
2    7    1     3     2     3   2     96     96    0    0    0   1      2
3    8    2     2     3     3   2     96     96    0    0    0   1      1
4    7    3     2     3     2   2     96     96    0    0    0   1      1
5    8    4     2     3     2   2     96     96    0    0    0   1      1
  P12A02 P12B P12C P12D01 P12D02 P12D P1301 P1302 P1303 P1304 P1305 P14 P14A01
1     96    0    0     NA     NA   NA     6     7     7     6     3   2     96
2      0    2    3     97     97 9997     7     7     7     7     1   2     96
3      0    2    3     25      0   25     7     7     7     7     2   2     96
4      0    1    3      0      1   30     9     9    10    10     3   2     96
5      0    2    3      0      4  120     5     6     8     8     4   2     96
  P14A02 P14B P14C P1501 P1502 P1503 P1504 P1505 P1506 P16 P17 P18 P18A P18B
1     96    0    0     7     7     5     5     6     2   3   2   1    8    1
2     96    0    0     7     7     9     7     7     1   4   8   2    0    0
3     96    0    0     7     7     7     7     7     2   2   3   2    0    0
4     96    0    0     8    10     4     8     9     3   2   8   1   10    2
5     96    0    0     5    10     7     5    98     4   8   2   1   10    2
  P18C01 P18C02 P18C03 P18C04 P18C05 P18C06 P18C07 P18C08 P19 P20 P21 P21A01
1     NA     NA     NA      1     NA     NA     NA     NA   2   2   2      0
2      0      0      0      0      0      0      0      0   2   2   2      0
3      0      0      0      0      0      0      0      0   2   2   2      0
4      0      0      0      0      0      0      0      0   3   2   2      0
5      0      0      0      0      0      0      0      0   2   2   2      0
  P21A02 P21A03 P21A04 P21B P22 P23 P24 P2501 P2502 P2503 P2601 P2602 P2603
1      0      0      0    0   3   1   2    10    10     8     1     2     2
2      0      0      0    0   1   1   1    10     6     4     2     9     9
3      0      0      0    0   1   8   2    10    10    10     1     2     2
4      0      0      0    0   3   2   2    10    10    10     1     2     2
5      0      0      0    0   1   1   2    10     8    10     2     2     2
  P2604 P27 P28 P29 P30 P30A P30AR P31 P32 P33 P34 P35 P35A P36 P37 P38 P39 P40
1     1   2   3  99   1   99    99   2  51   1   1   3    5   2   1   1   2   1
2     2   1   3   2   1    3     3   1  37   1   1   3   13   1   2   1   1   1
3     1   1   2   4   1   99    99   2  60   1   2   3    7   2   2   4   3   2
4     1   1   1   2   1   98    98   1  53   1   1   3   11   1   1   4   1   1
5     1   2   3   1   1    3     3   2  69   3   2   3    4   2   2   4   1   2
  P41 P42 P42A P43 P44 P45 P46 P46A P46B P46C P46D P47 P47A P47B P48 P4901
1 561   2    1  87  99  99   1    1    0    0    0   1   16    0   1    NA
2 215   4    0  86   7   6   1    1    0    0    0   1   16    0   3    NA
3 351   1    3  35  10   7   1    1    0    0    0   1   16    0   1    NA
4 223   1    1  85   9   7   1    1    0    0    0   1   16    0   1    NA
5 921   1    3  81   5   5   1    1    0    0    0   1   14    0   1    NA
  P4902 P4903 P4904 P5001 P5002 P5003 P5004 P5005 P5101 P5102 P5103 P5104 P5105
1    NA    NA    NA     -     -     -     -     -     -     -     -     -     -
2    NA    NA    NA     -     -     -     -     -     -     -     -     -     -
3    NA    NA    NA     -     -     -     -     -     -     -     -     -     -
4    NA    NA    NA     -     -     -     -     -     -     -     -     -     -
5    NA    NA    NA     -     -     -     -     -     -     -     -     -     -
  P52 P53 P54 P55 I1 I2 I3 I4 I5 I6 I7 I8 I9 E101 E102 E103 E2 E3 E4 C1 C1A C2
1   2   2   2   2  7 NA 30  2  2 NA 12 NA  1   20   10   17  5 17  3  1   0  2
2   2   2   2   2  1 NA 11 NA  2  2  2 NA NA   20   10   17  5 17  1  1   0  1
3   2   2   1   1  2 NA 10 NA NA  1 NA NA NA   20   10   17  5 30  2  1   0  1
4   2   2   2   1  3 NA 31 NA  2  2 10  1 NA   20   10   17  5 18  2  1   0  1
5   2   2   2   2  4 NA 13 NA NA  1  9 NA NA   20   10   17  5 19  2  1   0  1
  C2A C2B C3 C4 RECUERDO ESTUDIOS OCUMAR11 RAMA09 CONDICION11 ESTATUS  PESO
1   1   0  1  0       99        5        5      4           7       2 0.925
2   0   0  1  0        3        6        2      4           1       1 0.925
3   0   0  1  0       99        5        3      2           8       2 0.925
4   0   0  1  0       98        6        2      4           2       1 0.925
5   0   0  1  0        3        3        9      4           8       5 0.925
tail(data, 5)
     ESTU CUES CCAA PROV MUN TAMUNI CAPITAL DISTR SECCION ENTREV OLA P1 P2 P3
2553 3192 2596   19   52   1      4       1     0       0      0   3  3  2  6
2554 3192 2597   19   52   1      4       1     0       0      0   3  2  2  7
2555 3192 2598   19   52   1      4       1     0       0      0   3  2  4  3
2556 3192 2599   19   52   1      4       1     0       0      0   3  2  3  5
2557 3192 2600   19   52   1      4       1     0       0      0   3  7  2  7
     P401 P402 P403 P404 P501 P502 P503 P504 P6 P6A01 P6A02 P6B P6C P6D P7 P7A
2553    1    1    1    1    8    7    6    7  1    10     0   2   1   2  4   7
2554    3    2    1    2    6    9    5    6  2    96    96   0   0   0  0  NA
2555    2    2    2    2    5    3    7    7  1     0     2   0   0   0  0  NA
2556    2    2    2    2    4    6    2    3  2    96    96   0   0   0  0  NA
2557    2    2    2    2    3    4    3    6  1     0     2   0   0   0  0  NA
     P801 P802 P803 P8A01 P8A02 P8A03 P8B01 P8B02 P8B03 P901 P902 P903 P904
2553    1    2    2     1     0     0     4    96    96    7    7    8    8
2554    0    0    0     0     0     0    96    96    96    7    7    7    7
2555    0    0    0     0     0     0    96    96    96    5    5    5    5
2556    0    0    0     0     0     0    96    96    96    5    5    5    5
2557    0    0    0     0     0     0    96    96    96   98   98   98   98
     P905 P906 P907 P908 P1001 P1002 P1003 P11 P11A01 P11A02 P11B P11C P11D P12
2553    8    8    8    5     1     3     1   2     96     96    0    0    0   2
2554    1    7    7    1     2     8     2   2     96     96    0    0    0   2
2555    2    5    5    1     2     3     2   1      1      0    1    0    0   2
2556    2    5    5    6     3     3     3   2     96     96    0    0    0   2
2557    2   98   98    1     2     3     2   2     96     96    0    0    0   2
     P12A01 P12A02 P12B P12C P12D01 P12D02 P12D P1301 P1302 P1303 P1304 P1305
2553     96     96    0    0     NA     NA   NA     7     8     8     8     4
2554     96     96    0    0     NA     NA   NA     7    10     7    10     1
2555     96     96    0    0     NA     NA   NA     5     6     5     6     1
2556     96     96    0    0     NA     NA   NA     5     7     5     5     4
2557     96     96    0    0     NA     NA   NA     7     7     7     7     1
     P14 P14A01 P14A02 P14B P14C P1501 P1502 P1503 P1504 P1505 P1506 P16 P17
2553   2     96     96    0    0     7     7     7     6     7     4   3   8
2554   2     96     96    0    0     7     8     1     5     8     1   3   8
2555   2     96     96    0    0     4     6     1     1     3     1   3   8
2556   2     96     96    0    0     6     7     1     1     3     4   3   8
2557   2     96     96    0    0     5     7     6     4     7     1   3   1
     P18 P18A P18B P18C01 P18C02 P18C03 P18C04 P18C05 P18C06 P18C07 P18C08 P19
2553   1    4    1     NA     NA     NA     NA     NA      1     NA     NA   8
2554   2    0    0      0      0      0      0      0      0      0      0   8
2555   2    0    0      0      0      0      0      0      0      0      0   1
2556   2    0    0      0      0      0      0      0      0      0      0   2
2557   2    0    0      0      0      0      0      0      0      0      0   2
     P20 P21 P21A01 P21A02 P21A03 P21A04 P21B P22 P23 P24 P2501 P2502 P2503
2553   2   2      0      0      0      0    0   3   1   3    10     8     8
2554   3   2      0      0      0      0    0   3   8   1    10     1    98
2555   2   2      0      0      0      0    0   1   8   3    10     1     1
2556   3   2      0      0      0      0    0   1   1   3    10     1     1
2557   2   2      0      0      0      0    0   3   2   2    10     5    98
     P2601 P2602 P2603 P2604 P27 P28 P29 P30 P30A P30AR P31 P32 P33 P34 P35
2553     2     2     2     8   1   1   5   5    0     0   1  32   2   2   3
2554     2     2     2     2   1   3   7   1    1     1   1  19   2   2   3
2555     2     2     2     2   1   3   7   1    1     1   2  38   1   1   3
2556     1     1     1     1   2   4   5   5    0     0   2  20   2   2   3
2557     2     2     2     2   1   1   8   1    1     1   1  44   1   1   3
     P35A P36 P37 P38 P39 P40 P41 P42 P42A P43 P44 P45 P46 P46A P46B P46C P46D
2553   12   3   1   4   2   4 271   2    3  62  98   1   1    1    0    0    0
2554    6   2   2   4   2   6 592   1    1  84  98   1   1    1    0    0    0
2555    9   2   2   4   2   1 224   1    1  85  99  99   1    1    0    0    0
2556    6   1   2   4   2   6 740   1    3  45  98   1   1    1    0    0    0
2557    5   1   2   4   1   1   2   1    1  84  99   7   1    1    0    0    0
     P47 P47A P47B P48 P4901 P4902 P4903 P4904 P5001 P5002 P5003 P5004 P5005
2553   1   19    0   1     1    NA    NA    NA     -     -     -     -     -
2554   1   19    0   3     1    NA    NA    NA     -     -     -     -     -
2555   1    5    0   1     1    NA    NA    NA     -     -     -     -     -
2556   1   19    0   1    NA    NA    NA     1     -     -     -     -     -
2557   1   19    0   1    NA    NA    NA    NA     -     -     -     -     -
     P5101 P5102 P5103 P5104 P5105 P52 P53 P54 P55 I1 I2 I3 I4 I5 I6 I7 I8 I9
2553     -     -     -     -     -   2   3   2   2  5 NA NA NA NA NA  1 NA NA
2554     -     -     -     -     -   2   1   2   1  6 NA  5  2  1  1 14 NA NA
2555     -     -     -     -     -   2   1   1   1  7 NA  1 NA NA NA  3 NA NA
2556     -     -     -     -     -   2   1   2   1  3 NA  1 NA  1 NA  2 NA  1
2557     -     -     -     -     -   2   1   1   1  8 NA NA NA NA NA  1 NA NA
     E101 E102 E103 E2 E3 E4 C1 C1A C2 C2A C2B C3 C4 RECUERDO ESTUDIOS OCUMAR11
2553   22   10   17  7 17  2  1   0  1   0   0  1  0       97        6        2
2554   22   10   17  7 19  2  1   0  1   0   0  1  0        1        4        5
2555   22   10   17  7 17  2  1   0  1   0   0  1  0        1        6        2
2556   22   10   17  7 17  1  1   0  1   0   0  1  0       97        4        7
2557   22   10   17  7 17  2  2   1  1   0   0  1  0        1        5       10
     RAMA09 CONDICION11 ESTATUS  PESO
2553      4           9       1 0.049
2554      4          10       2 0.049
2555      4           2       1 0.049
2556      4          10       4 0.049
2557      4          12       2 0.049

Ejercicio: script 5: Recuentos básicos

Existen dos formas de obtener frecuencias. La primera utiliza la sintaxis clásica de R; la segunda, más potente, se integra con el flujo de expss y muestra una función de este paquete pensado para la expotación de archivos de datos en Investigación de Mercados (tipo SPSS).

# Basic frequency table using standard R syntax
table(data$P31)

Hombre  Mujer 
  1256   1301 
# Basic frequency table using standard `expss` syntax
fre(data$P31)
Sexo de la persona entrevistada  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 Hombre  1256 49.1 49.1 49.1 49.1
 Mujer  1301 50.9 50.9 50.9 100.0
 #Total  2557 100 100 100
 <NA>  0 0.0

Ejercicio: script 6: Uso de “pipes”

Utilizaremos el operador %>% (pipe). Imaginad que es una cinta transportadora: tomamos el conjunto de datos, lo pasamos a la función de celdas, luego a la de estadísticos y, finalmente, lo pivotamos.

# Calculate frequencies using pipes and expss
data %>%
  tab_cells(P31) %>%
  tab_stat_cases() %>%
  tab_pivot()
 #Total 
 Sexo de la persona entrevistada 
   Hombre  1256
   Mujer  1301
   #Total cases  2557

Ejercicio: script 7: Personalización de tablas

Podemos mejorar la legibilidad de nuestras tablas añadiendo totales y etiquetas personalizadas.

# Frequency table with total row positioned above
data %>% 
  tab_cells(P31) %>% 
  tab_stat_cases(total_row_position = "above", label = "Total cases") %>%
  tab_pivot()
 #Total 
 Sexo de la persona entrevistada 
   #Total cases   Total cases  2557
   Hombre   Total cases  1256
   Mujer   Total cases  1301
# Frequency table with column percentages
data %>% 
  tab_cells(P31) %>% 
  tab_stat_cpct(total_row_position = "above", label = "Percentage (%)") %>% 
  tab_pivot()
 #Total 
 Sexo de la persona entrevistada 
   #Total cases   Percentage (%)  2557
   Hombre   Percentage (%)  49.1
   Mujer   Percentage (%)  50.9

Ejercicio: script 8: Combinando estadísticos

A menudo necesitamos ver tanto los casos absolutos como los porcentajes en una misma tabla para facilitar la interpretación.

# Combining counts and column percentages in one table
data %>% 
  tab_cells(P31) %>% 
  tab_stat_cases(total_row_position = "above", label = "Cases") %>%
  tab_stat_cpct(label = "Column %") %>%
  tab_pivot(stat_position = "inside_columns")
 #Total 
 Cases   Column % 
 Sexo de la persona entrevistada 
   #Total cases  2557 2557
   Hombre  1256 49.1
   Mujer  1301 50.9

Ejercicio: script 9: Tipos de porcentajes

Exploremos las distintas formas de calcular porcentajes (columna, fila y tabla):

# Comparing different percentage calculations
data %>% 
  tab_cells(P31) %>% 
  tab_stat_cases() %>%
  tab_stat_cpct() %>% # Column percentage
  tab_stat_rpct() %>% # Row percentage
  tab_stat_tpct() %>% # Table percentage
  tab_pivot()
 #Total 
 Sexo de la persona entrevistada 
   Hombre  1256.0
   Mujer  1301.0
   #Total cases  2557
   Hombre  49.1
   Mujer  50.9
   #Total cases  2557
   Hombre  100.0
   Mujer  100.0
   #Total cases  2557
   Hombre  49.1
   Mujer  50.9
   #Total cases  2557

Ejercicio: script 10: Gestión de etiquetas

Una parte vital del análisis de encuestas es la gestión de etiquetas. var_lab() nos permite documentar qué significa la variable, y val_lab() permite asignar etiquetas a los valores numéricos (igual que en la vista de variables de SPSS).

# Assigning a variable label
var_lab(data$P31) <- 'Respondent gender'

# Assigning value labels to the numeric codes
val_lab(data$P31) <- c('Male' = 1, 'Female' = 2)

# Check the new labels
var_lab(data$P31)
[1] "Respondent gender"
val_lab(data$P31)
  Male Female 
     1      2