¿Cómo filtrar una base de datos en R?

Posted by | · · | Tutorial R | 4 Comments on ¿Cómo filtrar una base de datos en R?

0
shares
Compartir en Facebook
Twittear
Compartir en Google+
Compartir en LinkedIn
Compartir en Pinterest
+
Trends

Carguemos una base de datos de prueba: En los siguientes tabs puedes elegir entre varias opciones

Bases de Prueba

Data de R. El paquete “datasets” tiene más de 90 bases de datos para trabajar. Revisar

library(help="datasets")

Puedes bajar una base de la ENAHO 2014 (Módulo de Gobernabilidad) desde estos links:
Bloque 1, Bloque 2,Bloque 3
o también el módulo de sumarias (variables cálculadas): Bloque 4

Puedes descargar bases de datos de resultados que INFOGOB pone a disposición desde este link:
INFOGOB

En este caso trabajaremos con el módulo de gobernabilidad de la ENAHO. En un post anterior trabajamos con la pregunta que busca indagar que tan importante es la democracia para los peruanos (p6)


Quizás es de nuestro interés analizar la pregunta anterior pero en los que respondieron que la democracia funciona “bien” o “muy bien” (p7)


Una opción es filtrar los casos de la base de datos

Recuerda

Revisa el PDF “Cuestionario” podrás obtener información de las variables que tiene la base de la ENAHO

En R

LLamemos la librería que necesitamos


install.packages("foreign") # Recuerda que solo se instala una vez

library(foreign)

Puedes revisar como subir una data en SPSS en este post

setwd("D:/Dropbox/personales/Web joseincio.com/Post R/Bd_para R/Gobernabilidad_2013")
#Esta es la carpeta en la que estoy trabajando.
data<-read.spss("Enaho01B-2013-1.sav", to.data.frame = TRUE, use.value.labels = TRUE) # #Además de base de datos, le #estamos diciendo al R que las variables con categorías #respete las categorias, caso contrario las subirá como números
## Warning in read.spss("Enaho01B-2013-1.sav", to.data.frame = TRUE,
## use.value.labels = TRUE): Enaho01B-2013-1.sav: Unrecognized record type 7,
## subtype 18 encountered in system file

Esta es la frecuencia original de la pregunta que nos interesa

tabla<-table(data$P6) # Con esto ya tenemos la frecuencia simple de la variable que nos #interesa. 
tabla
## 
## Nada Importante Poco Importante      Importante  Muy importante 
##             788            2682           17058            5129 
##         NO SABE 
##            1946

Para pedir la frecuencia relativa de la tabla:

tabla1<-prop.table(tabla)*100 # Si quieres porcentaje (0 a 100)
tabla1
## 
## Nada Importante Poco Importante      Importante  Muy importante 
##        2.854762        9.716335       61.797631       18.581314 
##         NO SABE 
##        7.049958

Ahora veamos la frecuencia de nuestra variable que servirá como filtro (P7)

table(data$P7)
## 
##  Muy mal      Mal     Bien Muy bien  NO SABE 
##     1742    10875    11598      616     2772

Voy a crear un objeto que llamaré “data1” que contendrá la base de la encuesta pero solo para los que respondieron: “Muy Bien”

data1<-data[data$P7=="Muy bien",]# Recuerda que la base de datos tiene dos dimensiones, lo #que he hecho es poner una condición en dimensión de casos, con eso filtro casos. Después #de la (,) no hay nada, eso R lo entiendo que no he puesto condiciones a la dimensión #columnas. 

Pidamos la frecuencia de la variable (P6)

table(data1$P6) #Date cuenta que estoy usando el objeto Data 1
## 
## Nada Importante Poco Importante      Importante  Muy importante 
##               8              56             301             246 
##         NO SABE 
##               5
table(data1$P7) #Cómo ves solo nos hemos quedado con los que respondieron "Muy bien"
## 
##  Muy mal      Mal     Bien Muy bien  NO SABE 
##        0        0        0      616        0

¿Y si quiero con los que respondieron “Bien” y “Muy Bien”?

data2<-data[data$P7%in%c("Muy bien","Bien"),] # en este caso uso el conecto %in% que es %para que compare entre varias opciones. 
table(data2$P6) #Date cuenta que estoy usando el objeto Data 2
## 
## Nada Importante Poco Importante      Importante  Muy importante 
##             108             808            8607            2547 
##         NO SABE 
##             144
table(data2$P7) #Cómo ves solo nos hemos quedado con los que respondieron "Muy bien" y "Bien"
## 
##  Muy mal      Mal     Bien Muy bien  NO SABE 
##        0        0    11598      616        0

Hasta la próxima

Compartir en Facebook
Twittear
Compartir en Google+
Compartir en LinkedIn
Compartir en Pinterest
+

4 Comments

Trinidad says:

May 29, 2015 at 8:24 am

Estimado jose,

Muchas gracias por este blog! quiero saber si con la información de este post puedo crear una nueva base con las variables filtradas.

Saludos!

Reply

José Incio says:

June 29, 2015 at 12:15 am

Trinidad.

Claro. Solo tienes que asignarle un nuevo nombre y estarías creando un objeto solo con las variables o casos filtrados.

Saludos

Reply

wilson says:

November 4, 2015 at 12:07 am

Disculpe, le agradecería que me ayudara a crear una tabla de frecuencias con solo los datos que tienen frecuencia diferente de 1. mil gracias

Reply

José Incio says:

November 6, 2015 at 4:08 pm

Wilson, gracias por escribir. Se me ocurre esto:

categoria< -c(rep("Uno", 10), "dos", rep("tres", 100)); table(categoria[table(categoria)!=1]

Reply

Leave a comment