CURSO DE CAPACITACIÓN DEL SOFTWARE R

Julio César Martínez Sánchez

"Conocimiento que no se comparte, se echa a perder y se va a la basura"


Temario

Módulo 1

  1. Consideraciones iniciales
  2. Frecuencias
  3. Tabulados
  4. Etiquetar variables
  5. Recodificar variables
  6. Subconjunto de datos


Consideraciones iniciales

El primer paso para utilizar R es instalar los paquetes que es donde se encuentran las diferentes funciones que se ocupan para el análsis. Para esta sesión, se requieren los siguientes: data.table, foreign, questionr, base.


Instalar paquetes

Para instalar los paquetes (que contienen las diferentes funciones) se utiliza el comando install.packages. Se puede instalar de manera individual, o bien, se puede definir una lista y hacer una instalación conjunta.
            install.packages("readxl")
            install.packages("sas7bdat")
            install.packages(c("foreign","data.table","questionr","base","car"))


Cargar las librerias

Una vez que se han instalado los paquetes, en cada sesión se requiere instalar las librerías con el comando: library. Para mayor detalle se recomienda la página Quick-R Packages
            library(data.table)
            library(foreign)
            library(questionr)
            library(base)
            library(car)
            library(readxl)      
            library(sas7bdat)


Limpiar el entorno de trabajo

Antes de iniciar el análisis conviene limiar la consola con Ctrl + L y el entorno de trabajo (environment) con rm()
            rm(list = ls())
            # Ctrl + L  Limpia la consola  


Definir el directorio

A diferencia de otros programas, en R se debe usar \\ o / para definir la ruta de donde están las bases de datos. Conviene mencionar que se deben evitar espacios, caractéres especiales y, en el caso del español, acentos y la letra ñ
            setwd("F:/TallerR_COLMEX-master/TallerR_COLMEX-master/Datos")


Importar datos

Para importar bases de datos hay que identificar el tipo de base y seleccionar la función más adecuada. Por ejemplo, para importar base de SPSS, cuya extención es sav se requiere la función read.spss. Además, para tener una base legible para R, se usa la función data.frame.
            excel<-data.frame(read_excel("EXCEL_enoe.xlsx"))
            dbf<-data.frame(read.dbf("DBF_enoe.dbf"))
            stata<-data.frame(read.dta("STATA_enoe.dta"))
            cvs<- data.frame(read.table("CVS_enoe.csv", header=TRUE, sep=","))
            sas<-data.frame(read.sas7bdat("SAS_enoe.sas7bdat",debug = FALSE))
            spss<-data.frame(read.spss("SPSS_enoe.sav"))
## Warning in read.spss("SPSS_enoe.sav"): SPSS_enoe.sav: Unrecognized record
## type 7, subtype 18 encountered in system file


Exportar datos

Para guardar una base de datos, basta con determinar el tipo de datos que se requieran y elegir la función correspondiente. Si se quiere generar una base de Stata, entonces se selecciona la función:write.dta.
            #Limpiamos y solo nos quedamos  con la base de spss
                    rm("excel","dbf","stata","cvs","sas") 
            #Guardamos en DTA (stata)
                    write.dta(spss, "Julio_R.dta")
            
            #Guardamos en DBF (foxpro)
                    write.dbf(spss, "Julio_R.dbf")
            
            #Guardamos en CSV (Excel)
                    write.table(spss, "Julio_R.txt", sep=",")


Descripción de la base

Antes de iniciar el análisis, conviene tener un panorama general de la base de datos. Para ello, se ejecutan los comandos names y head; el primero muestra el nombre de todas las variables y el segundo los dos primeros valores.
            #Descripción de la base
                    names(spss)
                    head(spss,2)

La manipulación de las bases de datos sigue la lógica de un eje de coordenadas (x,y) en donde x son las filas y y las columnas:
            # Filas (como en EXCEL)
                    spss[1,]


            #Columnas (como en EXCEL)
                    spss[,2]


            #FIlas y columnas 
                    spss[1,2]



Frecuencias

Ayuda

Para mostrar la ayuda de R basta con poner el símbolo ? seguido del nombre de la función de la cual se requiera la documentación.
            ?wtd.table


Frecuencias con datos muestrales (sin ponderar)

Ya que en R se puede tener abiertas varias bases de datos, para analizar una variable es necesario indicar en qué base se encuentra; para ello se escribe: el nombre de la variable, el símbolo $ y el nombre de la variable
            wtd.table(spss$POS_OCU)
##    0    1    2    3    4 
## 5220 3143  153  948  134


Frecuencias con datos ponderados

La función wtd.table tiene la característica que permite ponderar los datos, para hacerlo hay que utilizar el argumento weights e indicar el nombre de la variable que se va a utilizar
            wtd.table(spss$POS_OCU, weights=spss$FAC)
##       0       1       2       3       4 
## 4895622 3007607  146231  853515  115294



Tabulados

Aún y cuando ambas variables se encuentren en la misma base de datos, es necesario escribir el nombre de la variable
      #Tabulados con datos muestrales (sin ponderar)
            wtd.table(spss$SEX,spss$POS_OCU)
##      0    1    2    3    4
##    171    0    0    0    0
## 1 2045 1739  111  577   49
## 2 3004 1404   42  371   85

      #Tabulados con datos ponderados
            wtd.table(spss$SEX, spss$POS_OCU, weights=spss$FAC)
##         0       1       2       3       4
##    156601       0       0       0       0
## 1 1912160 1644663  108670  518052   42036
## 2 2826861 1362944   37561  335463   73258



Etiquetar variables


Para generar las etiquetas se debe usar la función factor y se debe especificar 3 cosas:

  • La variable que se va etiquetar
  • Los valores (levels)
  • Las etiquetas (labels)

Generar etiquetas

En este caso se usa la variable SEX la cual tiene dos valores (1 y 2) cuyas etiquetas son 1=Hombre, 2=Mujer
            spss$SEX <- factor(spss$SEX,levels = c(1,2),labels = c("Hombre", "Mujer"))


Tabular variable etiquetada

Para validar que se haya etiquetado correctamente la variable, se genera un tabulado para analizar el resultado
            wtd.table(spss$SEX, weights=spss$FAC)
##  Hombre   Mujer 
## 4225581 4636087


Generar etiquetas

En el caso en que se tengan variables con más etiquetas, como es el caso de la variable POS_OCU (posición en la ocupación), basta con indicar todos los valores posibles y las etiquetas correspondientes.
            spss$POS_OCU <- factor(spss$POS_OCU,levels = c(1,2,3,4,5),labels = c("Subordinados", "Empleadores","Cuenta Propia", "Sin Pago","NE"))


Tabulado 2x2 (SEXO x POS_OCU)

Finalmente, para comprobar que todo se haya etiquetado correctamente, se genera un tabulado con las variables SEX y POS_OCU
            wtd.table(spss$POS_OCU, spss$SEX, weights=spss$FAC)
##                Hombre   Mujer
## Subordinados  1644663 1362944
## Empleadores    108670   37561
## Cuenta Propia  518052  335463
## Sin Pago        42036   73258
## NE                  0       0



Recodificar variables

Para poder recodificar una variable de manera correcta, se debe de convertir la variable al tipo de datos deseado, es decir, convertir a númerica o caracter.

Recodificion de variables numericas (rangos)


  #Convertir a numéricas
            spss$EDA <-as.numeric(as.character(spss$EDA))

  #Crear nueva variable
            spss$EDA_5categ<-0

  #Establecer los rangos
            spss$EDA_5categ[spss$EDA >= 0 & spss$EDA <=10] <- 1
            spss$EDA_5categ[spss$EDA >= 11 & spss$EDA <=20] <- 2
            spss$EDA_5categ[spss$EDA >= 21 & spss$EDA <=30] <- 3
            spss$EDA_5categ[spss$EDA >= 31 & spss$EDA <=40] <- 4
            spss$EDA_5categ[spss$EDA >= 41] <- 5
            
  #Validar con un tabulado
            wtd.table(spss$EDA_5categ)
##    0    1    2    3    4    5 
##  171 1344 1484 1555 1320 3724


Recodificion de variables tipo caracter


  #Convertir a caracter
            spss$R_DEF <- as.character(spss$R_DEF)
  
  #Crear nueva variable
            spss$R_DEF_VALIDO <-" "
  
  #Establecer los rangos
            spss$R_DEF_VALIDO[spss$R_DEF!="00"] <- "Entrevista incompleta"
            spss$R_DEF_VALIDO[spss$R_DEF=="00"] <- "Entrevista completa"
  
  #Validar con un tabulado
            wtd.table(spss$R_DEF_VALIDO)
##   Entrevista completa Entrevista incompleta 
##                  9595                     3



Subconjunto de datos

Existen dos formas de generar sbconjuntos de datos:

  • Seleccionar variables. Se seleccionan únicamente ciertas variables por lo que el número de registros permanece igual
  • Seleccionar casos. Se mantienen todas las variables pero sólo de un número menor de casos

Seleccionar variables

Como se mencionaba en el punto 0.7, en R se sigue la lógica de un eje de coordenadas: spss [ CASOS , VARIABLES].

    #Definimos las variables
                   var<-c("SEX", "POS_OCU")
    
    #Seleccionamos SÓLO esas variables
                   nueva_spss_1 <- spss[,var]


Seleccionar casos

Para hacer la selección se utiliza la función which() la cual sirve para hacer la selección de acuerdo a los criterios indicados. conviene hacer notar que se debe de tener las variables con el formato requerido.
            nueva_spss_2 <- spss[ which(as.numeric(spss$EDA)<18), ]


Seleccionar variables y casos


            nueva_spss_1 <- spss[which(as.numeric(spss$EDA)<18), c("SEX", "POS_OCU")]