Tablas de datos

Lo primero que necesitamos son las tablas de datos que contienen los resultados en los exámenes de logro de Matemáticas y de Español, así como las respuestas a los cuestionrios de contexto de los estudiantes. Estas se encuentran disponibles para su descarga en formato .zip desde el sitio oficial del INEE.

Los documentos que necesitamos son tres:

Podemos descargar estos documentos a nuestra carpeta de trabajo usando download.file.

#Español
download.file(url = "http://www.inee.edu.mx/images/stories/documentos_pdf/Bases_Datos/EXCALE09_2012/Excale09_2012_Alum_Esp.zip", destfile = "Excale09_2012_Alum_Esp.zip")
#Matemáticas
download.file(url = "http://www.inee.edu.mx/images/stories/documentos_pdf/Bases_Datos/EXCALE09_2012/Excale09_2012_Alum_Mat.zip", destfile = "Excale09_2012_Alum_Mat.zip")
#Cuestionario para Alumnos
download.file(url = "http://www.inee.edu.mx/images/stories/documentos_pdf/Bases_Datos/EXCALE09_2012/Excale09_2012_Alum_Cuest.zip", destfile = "Excale09_2012_Alum_Cuest.zip")

Exploramos que contienen estos archivos .zip con la función unzip usando el argumento list = T.

#Español
unzip("Excale09_2012_Alum_Esp.zip", list = T)
##                         Name   Length                Date
## 1 Excale09_2012_Alum_Esp.sps    37591 2014-03-11 12:33:00
## 2 Excale09_2012_Alum_Esp.TXT 36629550 2014-02-24 13:45:00
## 3 Excale09_2012_Alum_Esp.sas    48772 2014-03-11 12:39:00
#Matemáticas
unzip("Excale09_2012_Alum_Mat.zip", list = T)
##                         Name   Length                Date
## 1 Excale09_2012_Alum_Mat.TXT 36570186 2014-02-24 13:48:00
## 2 Excale09_2012_Alum_Mat.sas    51807 2014-03-11 12:41:00
## 3 Excale09_2012_Alum_Mat.sps    40398 2014-03-11 12:35:00
#Cuestionario para Alumno
unzip("Excale09_2012_Alum_Cuest.zip", list = T)
##                           Name    Length                Date
## 1 Excale09_2012_Alum_Cuest.sps     32294 2014-03-11 12:30:00
## 2 Excale09_2012_Alum_Cuest.TXT 117553443 2014-02-24 13:43:00
## 3 Excale09_2012_Alum_Cuest.sas     40670 2014-03-11 12:38:00

De acuerdo al sitio del INEE, el contenido de estos archivos es el siguiente.

Las bases de datos están disponibles en formato de texto (ASCII) y se anexan las sintaxis correspondientes para construir archivos en los formatos que utilizan los paquetes estadísticos SPSS y SAS. Dichas sintaxis, además de leer los datos de los archivos de texto, etiquetan las variables así como sus respectivos valores, identifican a los casos perdidos y le dan formato a los datos.

Para nosotros que no estamos usando SPSS o SAS, entonces el archivo que nos interesa es el que tiene extensión .txt. De todos modos, extraemos el contenido completo de los archivos .zip que hemos descargado, porque como veremos más adelante, nos serán de utilidad.

Usamos de nuevo la función unzip, esta vez sin argumentos adicionales, para así extraer los documentos en nuestra carpeta de trabajo.

unzip("Excale09_2012_Alum_Esp.zip")
unzip("Excale09_2012_Alum_Mat.zip")
unzip("Excale09_2012_Alum_Cuest.zip")

Comprobamos que todos los documentos estén presentes en nuestra carpeta de trabajo antes de continuar con la función list.files.

list.files()
##  [1] "excale 06 2013 trees.Rproj"   "Excale09_2012_Alum_Cuest.sas"
##  [3] "Excale09_2012_Alum_Cuest.sps" "Excale09_2012_Alum_Cuest.TXT"
##  [5] "Excale09_2012_Alum_Cuest.zip" "Excale09_2012_Alum_Esp.sas"  
##  [7] "Excale09_2012_Alum_Esp.sps"   "Excale09_2012_Alum_Esp.TXT"  
##  [9] "Excale09_2012_Alum_Esp.zip"   "Excale09_2012_Alum_Mat.sas"  
## [11] "Excale09_2012_Alum_Mat.sps"   "Excale09_2012_Alum_Mat.TXT"  
## [13] "Excale09_2012_Alum_Mat.zip"   "rsconnect"                   
## [15] "trees excale 09 2012.Rmd"     "trees_excale_09_2012.docx"   
## [17] "trees_excale_09_2012.html"    "trees_excale_09_2012.Rmd"    
## [19] "tress excale 09 2012.Rmd"     "tress_excale_09_2012.html"

Ya con las tablas de datos en nuestro poder, procedemos a imporatarlas padra trabajar con ellas como objetos de R.

Importar tablas de datos

Antes de continuar, necesitaremos algunos paquetes adicionales de R para facilitar nuestro trabajo de aquí en adelante.

Cargamos estos paquetes a nuestro directorio de trabajo. En caso de que no los tengamos en nuestra librería, se descargarán e instalarán.

if (!require("dplyr")) install.packages("dplyr")
if (!require("readr")) install.packages("readr")

Veamos qué hay en las primeras tres líneas del archivo Excale09_2012_Alum_Esp.txt usando la función read_lines de readr para darnos una idea de su contenido y así elegir la mejor herramienta para importar.

read_lines(file = "Excale09_2012_Alum_Mat.txt", n_max = 3)
## [1] "1   1 1AGUASCALIENTES     6GRAL01GU  01GRAL    3PN2012SEC3ALF1021510  15.5833332100  51.8730167777777777777777777777777011100111000000101010110777777777777700000010111007777777777777777777777777611.9361508.8323503.1043543.2002480.1923322221111110000 76  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  77.805000"
## [2] "1   1 1AGUASCALIENTES     6GRAL01GU  01GRAL    4PN2012SEC3ALF13115 4  15.0833332100  51.8730160010011110117777777777777777777777777777777777777777777777777701111010110000000110111017777777777777568.0668628.2107558.0429589.5468536.5629332321111111010 76  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  77.805000"
## [3] "1   1 1AGUASCALIENTES     6GRAL01GU  01GRAL   10PN2012SEC3ALF14115 1  15.3333332100  51.8730167777777777771011011111100777777777777777777777777777777777777777777777777770111010010010000000011100542.7763574.2803574.2803512.7044512.7044233221111101100 76  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  77.805000  25.935000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  25.935000  77.805000  77.805000"

Podemos darnos cuenta de un par de cosas.

En primer lugar, la primera línea de la tabla de datos no contiene nombres de columnas, es decir, los identificadores de las variables que están contenidos en ella. Aunque podemos adivinar que ese AGUASCALIENTES que aparece en las líneas que obtuvimos se refiere seguramente a una variable para identificar entidad federativa, el resto de los valores no podemos deducirlos tan fácil. Por lo tanto, como esa información no está presente en la tabla de datos, tendrémos que obtenerla de algún otro lado.

En segundo lugar, aunque hay valores separados por espacios, esto no parece ser uniforme. Tenemos secuencias de números muy largas con varios puntos en ellas, números que parecen representar cantidades decimal, y cadenas de números y letras. Esto quiere decir que este archivo no corresponde a un documento delimitado por espacios. Si ese fuera el caso, habría un espacio entre cada valor, indicando que cada valor corresponde a una columna, y cada columna a una variable. Lo más seguro es que este sea un documento de ancho fijo, en el que cada columna tiene un archo determinado que no necesariamente es igual para todas las columnas. Por lo tanto, como una vez más esa información no está presente en la tabla de datos, tendremos que obtenerla de algún otro lado.

Como en la página del INEE no se encuentra un diccionario de variables o algún documento equivalente, esta información la buscaremos en las sintaxis para SPSS y SAS, lo cual implica abrir esos archivos como texto y recuperar lo que necesitamos.

Por ejemplo, los nombres de las variables de la tabla de datos se encuentran a partir de la línea 312 de la sintaxis para SPSS (mostrado como matrix usando as.matrix para facilitar la legibilidad).

read_lines(file = "Excale09_2012_Alum_Mat.sps", skip = 311, n_max = 5) %>% as.matrix()
##      [,1]                                                                         
## [1,] "VARIABLE LABELS"                                                            
## [2,] "      NACIONAL      \"Variable auxiliar para obtener promedios nacionales\""
## [3,] "      ESCUELA       \"Identificador de la escuela\""                        
## [4,] "      ID_ENT        \"Entidad federativa (identificador num<e9>rico)\""     
## [5,] "      NOM_ENT       \"Entidad federativa\""

Los anchos de las columnas están a partir de la línea

read_lines(file = "Excale09_2012_Alum_Mat.sps", skip = 64, n_max = 5) %>% as.matrix()
##      [,1]                                       
## [1,] "       /NACIONAL           1 - 1"         
## [2,] "        ESCUELA            2 - 5"         
## [3,] "        ID_ENT             6 - 7"         
## [4,] "        NOM_ENT            8 - 26     (a)"
## [5,] "        ID_MOD            27 - 27"

Y así por el estilo. La información útil está toda presente, pero hay es necesario buscarla y organizarla de manera que nos sea útil. Desafortunaramente, desconozco procedimientos para realizar esto de manera sencilla en R, así que hay que llevar a cab oeste proceso “a la antigua”.

Pero, para hacer el cuento corto, ya he realizado esa tarea u es posible consultar un diccionario de variables producto de este proceso en el siguiente enlace.

Importar los resultados de Español a R

Como ya hemos establecido, las tablas de datos con los resultados de los estudiantes se encuentran en documentos de ancho fijo. Para abrir este tipo de archivo usaremos la función read_fwf de readr. Esta función necesita que le proporcionemos los nombres de las variables y los anchos de las columnas del archivo que estamos leyendo, así que las guardaremos como dos objetos.

variables_nombres <- c("NACIONAL", "ESCUELA", "ID_ENT", "NOM_ENT", "ID_MOD", "MOD", "ESTRATO", "ENTEST", "ALUMNO", "ID_INSTR", "SEXO", "EDAD_AC", "MES_NAC", "EDAD", "EDAD_ACC", "EDAD_N", "EDAD_ANT", "EDAD_EES", "W_ALU", "SEA_01", "SEA_02", "SEA_03", "SEA_04", "SEA_05", "SEA_06", "SEA_07", "SEA_08", "SEA_09", "SEA_10", "SEA_11", "SEA_12", "SEA_13", "SEA_14", "SEA_15", "SEA_16", "SEB_01", "SEB_02", "SEB_03", "SEB_04", "SEB_05", "SEB_06", "SEB_07", "SEB_08", "SEB_09", "SEB_10", "SEB_11", "SEB_12", "SEB_13", "SEB_14", "SEB_15", "SEB_16", "SEC_01", "SEC_02", "SEC_03", "SEC_04", "SEC_05", "SEC_06", "SEC_07", "SEC_08", "SEC_09", "SEC_10", "SEC_11", "SEC_12", "SEC_13", "SEC_14", "SEC_15", "SEC_16", "SED_01", "SED_02", "SED_03", "SED_04", "SED_05", "SED_06", "SED_07", "SED_08", "SED_09", "SED_10", "SED_11", "SED_12", "SED_13", "SED_14", "SED_15", "SED_16", "SEE_01", "SEE_02", "SEE_03", "SEE_04", "SEE_05", "SEE_06", "SEE_07", "SEE_08", "SEE_09", "SEE_10", "SEE_11", "SEE_12", "SEE_13", "SEE_14", "SEE_15", "SEE_16", "SEF_01", "SEF_02", "SEF_03", "SEF_04", "SEF_05", "SEF_06", "SEF_07", "SEF_08", "SEF_09", "SEF_10", "SEF_11", "SEF_12", "SEF_13", "SEF_14", "SEF_15", "SEF_16", "PV1ESP", "PV2ESP", "PV3ESP", "PV4ESP", "PV5ESP", "ESPNVL1", "ESPNVL2", "ESPNVL3", "ESPNVL4", "ESPNVL5", "ESPNVBL1", "ESPNVBL2", "ESPNVBL3", "ESPNVBL4", "ESPNVBL5", "ESPNVML1", "ESPNVML2", "ESPNVML3", "ESPNVML4", "ESPNVML5", "WVARSTRR", "W_FSTR1", "W_FSTR2", "W_FSTR3", "W_FSTR4", "W_FSTR5", "W_FSTR6", "W_FSTR7", "W_FSTR8", "W_FSTR9", "W_FSTR10", "W_FSTR11", "W_FSTR12", "W_FSTR13", "W_FSTR14", "W_FSTR15", "W_FSTR16", "W_FSTR17", "W_FSTR18", "W_FSTR19", "W_FSTR20", "W_FSTR21", "W_FSTR22", "W_FSTR23", "W_FSTR24", "W_FSTR25", "W_FSTR26", "W_FSTR27", "W_FSTR28", "W_FSTR29", "W_FSTR30", "W_FSTR31", "W_FSTR32", "W_FSTR33", "W_FSTR34", "W_FSTR35", "W_FSTR36", "W_FSTR37", "W_FSTR38", "W_FSTR39", "W_FSTR40", "W_FSTR41", "W_FSTR42", "W_FSTR43", "W_FSTR44", "W_FSTR45", "W_FSTR46", "W_FSTR47", "W_FSTR48", "W_FSTR49", "W_FSTR50", "W_FSTR51", "W_FSTR52", "W_FSTR53", "W_FSTR54", "W_FSTR55", "W_FSTR56", "W_FSTR57", "W_FSTR58", "W_FSTR59", "W_FSTR60", "W_FSTR61", "W_FSTR62", "W_FSTR63", "W_FSTR64", "W_FSTR65", "W_FSTR66", "W_FSTR67", "W_FSTR68", "W_FSTR69", "W_FSTR70", "W_FSTR71", "W_FSTR72", "W_FSTR73", "W_FSTR74", "W_FSTR75", "W_FSTR76", "W_FSTR77", "W_FSTR78", "W_FSTR79", "W_FSTR80", "W_FSTR81", "W_FSTR82", "W_FSTR83", "W_FSTR84", "W_FSTR85", "W_FSTR86", "W_FSTR87", "W_FSTR88", "W_FSTR89", "W_FSTR90", "W_FSTR91", "W_FSTR92", "W_FSTR93", "W_FSTR94", "W_FSTR95", "W_FSTR96", "W_FSTR97", "W_FSTR98", "W_FSTR99", "W_FSTR100")

variables_anchos <- c(1, 4, 2, 19, 1, 4, 6, 6, 5, 15, 1, 2, 2, 11, 1, 1, 1, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11)

Ahora, importamos la tabla de datos y la asignamos al objeto ex09_esp.

ex09_esp <- read_fwf("Excale09_2012_Alum_Esp.txt", fwf_widths(col_names = variables_nombres, widths = variables_anchos))

Podemos explorar el contenido de la tabla que hemos importado a nuestro espacio de R.

Algunas de las funciones que podemos usar son dim, que nos dirá el número de filas y columnas en la tabla de datos,; str nos mostrará la estructura del objeto, incluyendo que tipo de datos que contiene cada columna; head y tail nos mostrarán las primeras y últimas filas de la tabla; y summary nos presentará un resumen de estadísticos descriptivos.

Como hemos creado ex09_esp con una función de readr, este es un objeto de clase tbl_df, el cual es un data_frame con características adicionales. Entre otras, si mostramos el objeto, nos muestra un resumen de este, el lugar de tratar de mostrar todo su contenido.

ex09_esp
## Source: local data frame [27,133 x 236]
## 
##    NACIONAL ESCUELA ID_ENT        NOM_ENT ID_MOD   MOD ESTRATO ENTEST
##       (int)   (int)  (int)          (chr)  (int) (chr)   (chr)  (chr)
## 1         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 2         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 3         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 4         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 5         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 6         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 7         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 8         1       1      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 9         1       2      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## 10        1       2      1 AGUASCALIENTES      6  GRAL    01GU 01GRAL
## ..      ...     ...    ...            ...    ...   ...     ...    ...
## Variables not shown: ALUMNO (int), ID_INSTR (chr), SEXO (int), EDAD_AC
##   (int), MES_NAC (int), EDAD (dbl), EDAD_ACC (int), EDAD_N (int), EDAD_ANT
##   (int), EDAD_EES (int), W_ALU (dbl), SEA_01 (int), SEA_02 (int), SEA_03
##   (int), SEA_04 (int), SEA_05 (int), SEA_06 (int), SEA_07 (int), SEA_08
##   (int), SEA_09 (int), SEA_10 (int), SEA_11 (int), SEA_12 (int), SEA_13
##   (int), SEA_14 (int), SEA_15 (int), SEA_16 (int), SEB_01 (int), SEB_02
##   (int), SEB_03 (int), SEB_04 (int), SEB_05 (int), SEB_06 (int), SEB_07
##   (int), SEB_08 (int), SEB_09 (int), SEB_10 (int), SEB_11 (int), SEB_12
##   (int), SEB_13 (int), SEB_14 (int), SEB_15 (int), SEB_16 (int), SEC_01
##   (int), SEC_02 (int), SEC_03 (int), SEC_04 (int), SEC_05 (int), SEC_06
##   (int), SEC_07 (int), SEC_08 (int), SEC_09 (int), SEC_10 (int), SEC_11
##   (int), SEC_12 (int), SEC_13 (int), SEC_14 (int), SEC_15 (int), SEC_16
##   (int), SED_01 (int), SED_02 (int), SED_03 (int), SED_04 (int), SED_05
##   (int), SED_06 (int), SED_07 (int), SED_08 (int), SED_09 (int), SED_10
##   (int), SED_11 (int), SED_12 (int), SED_13 (int), SED_14 (int), SED_15
##   (int), SED_16 (int), SEE_01 (int), SEE_02 (int), SEE_03 (int), SEE_04
##   (int), SEE_05 (int), SEE_06 (int), SEE_07 (int), SEE_08 (int), SEE_09
##   (int), SEE_10 (int), SEE_11 (int), SEE_12 (int), SEE_13 (int), SEE_14
##   (int), SEE_15 (int), SEE_16 (int), SEF_01 (int), SEF_02 (int), SEF_03
##   (int), SEF_04 (int), SEF_05 (int), SEF_06 (int), SEF_07 (int), SEF_08
##   (int), SEF_09 (int), SEF_10 (int), SEF_11 (int), SEF_12 (int), SEF_13
##   (int), SEF_14 (int), SEF_15 (int), SEF_16 (int), PV1ESP (dbl), PV2ESP
##   (dbl), PV3ESP (dbl), PV4ESP (dbl), PV5ESP (dbl), ESPNVL1 (int), ESPNVL2
##   (int), ESPNVL3 (int), ESPNVL4 (int), ESPNVL5 (int), ESPNVBL1 (int),
##   ESPNVBL2 (int), ESPNVBL3 (int), ESPNVBL4 (int), ESPNVBL5 (int), ESPNVML1
##   (int), ESPNVML2 (int), ESPNVML3 (int), ESPNVML4 (int), ESPNVML5 (int),
##   WVARSTRR (int), W_FSTR1 (dbl), W_FSTR2 (dbl), W_FSTR3 (dbl), W_FSTR4
##   (dbl), W_FSTR5 (dbl), W_FSTR6 (dbl), W_FSTR7 (dbl), W_FSTR8 (dbl),
##   W_FSTR9 (dbl), W_FSTR10 (dbl), W_FSTR11 (dbl), W_FSTR12 (dbl), W_FSTR13
##   (dbl), W_FSTR14 (dbl), W_FSTR15 (dbl), W_FSTR16 (dbl), W_FSTR17 (dbl),
##   W_FSTR18 (dbl), W_FSTR19 (dbl), W_FSTR20 (dbl), W_FSTR21 (dbl), W_FSTR22
##   (dbl), W_FSTR23 (dbl), W_FSTR24 (dbl), W_FSTR25 (dbl), W_FSTR26 (dbl),
##   W_FSTR27 (dbl), W_FSTR28 (dbl), W_FSTR29 (dbl), W_FSTR30 (dbl), W_FSTR31
##   (dbl), W_FSTR32 (dbl), W_FSTR33 (dbl), W_FSTR34 (dbl), W_FSTR35 (dbl),
##   W_FSTR36 (dbl), W_FSTR37 (dbl), W_FSTR38 (dbl), W_FSTR39 (dbl), W_FSTR40
##   (dbl), W_FSTR41 (dbl), W_FSTR42 (dbl), W_FSTR43 (dbl), W_FSTR44 (dbl),
##   W_FSTR45 (dbl), W_FSTR46 (dbl), W_FSTR47 (dbl), W_FSTR48 (dbl), W_FSTR49
##   (dbl), W_FSTR50 (dbl), W_FSTR51 (dbl), W_FSTR52 (dbl), W_FSTR53 (dbl),
##   W_FSTR54 (dbl), W_FSTR55 (dbl), W_FSTR56 (dbl), W_FSTR57 (dbl), W_FSTR58
##   (dbl), W_FSTR59 (dbl), W_FSTR60 (dbl), W_FSTR61 (dbl), W_FSTR62 (dbl),
##   W_FSTR63 (dbl), W_FSTR64 (dbl), W_FSTR65 (dbl), W_FSTR66 (dbl), W_FSTR67
##   (dbl), W_FSTR68 (dbl), W_FSTR69 (dbl), W_FSTR70 (dbl), W_FSTR71 (dbl),
##   W_FSTR72 (dbl), W_FSTR73 (dbl), W_FSTR74 (dbl), W_FSTR75 (dbl), W_FSTR76
##   (dbl), W_FSTR77 (dbl), W_FSTR78 (dbl), W_FSTR79 (dbl), W_FSTR80 (dbl),
##   W_FSTR81 (dbl), W_FSTR82 (dbl), W_FSTR83 (dbl), W_FSTR84 (dbl), W_FSTR85
##   (dbl), W_FSTR86 (dbl), W_FSTR87 (dbl), W_FSTR88 (dbl), W_FSTR89 (dbl),
##   W_FSTR90 (dbl), W_FSTR91 (dbl), W_FSTR92 (dbl), W_FSTR93 (dbl), W_FSTR94
##   (dbl), W_FSTR95 (dbl), W_FSTR96 (dbl), W_FSTR97 (dbl), W_FSTR98 (dbl),
##   W_FSTR99 (dbl), W_FSTR100 (dbl)

Datos perdidos