Introduccion a R

Diplomado en Software Estadistico

Bases de datos en R

PROBLEMA: Cuantas mujeres en edad reproductiva trabajan en Mexico?

Para este ejercicio se van a usar la base de Caracteristicas sociodemograficas de los integrantes del hogar de la Encuesta Nacional de Ingresos y Gastos de los Hogares 2016 en el formato dbf.

0. Limpiar el espacio de trabajo

Antes de iniciar a trabajar en R conviene limpiar el entorno de trabajo

rm(list=ls())     
graphics.off()    
options(warn=-1)  

1. Instalar paquetes/librerias

Par dar inicio al analisis conviene preguntarse que tipo de analisis se va a llevar a cabo?, se van a hacer analisis estadistico?, se haran graficas?

1.1 Paquetes

Con base en el tipo de analisis que se va a llevar a cabo, el primer paso es revisar los paquetes que ya estan instalados e instalar los que hagan falta. Esto ultimo se puede hacer con el comando install.package.

install.packages("foreign")
install.packages("ggplot2")
install.packages("questionr")

1.2 Librerias

Hecho esto, el siguiente paso es cargar las librerias. Para mayor detalle se recomienda la pagina Quick-R Packages

library(base)         # Funciones basicas
library(foreign)      # Manipular diferentes formatos cvs, dta, dbf
library(questionr)    # Tabulados

2. Directorio de trabajo

Es importante que al iniciar se defina el directorio de trabajo, el cual corresponde a la carpeta en donde se encuentran los archivos que se van a utilizar. Hay que utilizar // o / para definir el entorno de trabajo

setwd("C:/Users/jmartinez/Desktop/FLACSO_R-master/FLACSO_R-master/Datos") 

3. Importar datos

Para importar bases de datos hay que identificar el tipo de base y seleccionar la funcion mas adecuada. Por ejemplo, para importar base de csv, cuya extencion es sav se requiere la funcion read.csv. Ademas, para tener una base legible para R, se usa la funcion data.frame.

excel<-data.frame(read_excel("sdemt119.xlsx"))
dbf<-data.frame(read.dbf("sdemt119.dbf"))
stata<-data.frame(read.dta("sdemt119.dta"))
cvs<- data.frame(read.table("sdemt119.csv", header=TRUE, sep=","))

En este caso se va a cargar la base sociodemografico del primer trimestre de 2019

cvs<- data.frame(read.table("sdemt119.csv", header=TRUE, sep=","))

4. Exportar datos

Para guardar una base de datos, basta con determinar el tipo de datos que se requieran y elegir la funcion correspondiente. Si se quiere generar una base de Stata, entonces se selecciona la funcion:write.dta.

4.1 Guardar en DTA (stata)

        write.dta(cvs, "Julio_R.dta")

4.2 Guardar en DBF (foxpro)

write.dbf(cvs, "Julio_R.dbf")

4.3. Descripcion de la base

Antes de iniciar el analisis, 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.
#Descripcion de la base
                    names(cvs)
                    head(cvs,2)

La manipulacion de las bases de datos sigue la logica de un eje de coordenadas ( x , y ) en donde x son las filas y y las columnas:

# Filas (como en EXCEL)
      cvs[1,]

5. Frecuencias

Ya que en R se puede tener abiertas varias bases de datos, para analizar una variable es necesario indicar en que base se encuentra; para ello se escribe: el nombre de la variable, el simbolo $ y el nombre de la variable
    wtd.table(cvs$CLASE2)
##      0      1      2      3      4 
##  84634 176997   6326  18681 119398

6. Tabulados

Aun 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(cvs$SEX,cvs$CLASE1)
##        0      1      2
## 1  39115 110020  43369
## 2  37503  73303  94710

7. Etiquetar variables

Para generar las etiquetas se debe usar la funcion factor y se debe especificar 3 cosas:

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

7.1 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.

    cvs$SEX <- factor(cvs$SEX,levels = c(1,2),labels = c("Hombre","Mujer"))
    
    cvs$CLASE2 <- factor(cvs$CLASE2,levels = c(1,2,3,4),labels = c("Ocupada","Desocupada","Disponibles","No disponible" ))

7.2 Tabular variable etiquetada

Para validar que se haya etiquetado correctamente la variable, se genera un tabulado para analizar el resultado

  wtd.table(cvs$SEX,cvs$CLASE2)
##        Ocupada Desocupada Disponibles No disponible
## Hombre  106260       3760        6534         36835
## Mujer    70737       2566       12147         82563

8. Recodificar variables

Para poder recodificar una variable de manera correcta, se debe de convertir la variable al tipo de dato deseado, es decir, convertir a numerica o caracter.

    #8.1 Convertir las variables a numerico
    cvs$EDA <-as.numeric(as.character(cvs$EDA))
    
    #8.2 Crear nueva variable
    cvs$edad_reproductiva<-0
    
    #8.3 Establecer los rangos
    cvs$edad_reproductiva[cvs$EDA >= 15 & cvs$EDA <=54] <- 1
    cvs$edad_reproductiva[cvs$EDA >= 54] <- 2

    #8.3 Validar con un tabulado
    wtd.table(cvs$edad_reproductiva)

9. Subconjunto de datos

Existen dos formas de generar sbconjuntos de datos:

  • Seleccionar variables. Se seleccionan unicamente ciertas variables por lo que el numero de registros permanece igual

  • Seleccionar casos. Se mantienen todas las variables pero solo de un numero menor de casos

9.1 Seleccionar variables

En R se sigue la logica de un eje de coordenadas: csv [ CASOS , VARIABLES].
#Definimos las variables
        var<-c("SEX", "CLASE2","FAC")
    
#Seleccionamos SoLO esas variables
        nueva_csv_1 <- cvs[,var]

9.2 Seleccionar casos

Para hacer la seleccion se utiliza la funcion which() la cual sirve para hacer la seleccion de acuerdo a los criterios indicados. conviene hacer notar que se debe de tener las variables con el formato requerido.

  nueva_csv_2 <- cvs[ which(as.numeric(cvs$edad_reproductiva)==1), ]

9.3 Seleccionar variables y casos

Tambien se puede combinar la seleccion, es decir, seleccionar casos y variables al mismo tiempo.
  nueva_csv_3 <- cvs[ which(as.numeric(cvs$edad_reproductiva)==1),var ]

10. Respuesta al problema:

Cuantas mujeres en edad reproductiva trabajan en Mexico?

    wtd.table(nueva_csv_3$SEX,nueva_csv_3$CLASE2)
    
    wtd.table(nueva_csv_3$SEX,nueva_csv_3$CLASE2, weights =nueva_csv_3$FAC)