Ejercicio exploratorio II

Marcos Matabuena

15/10/2015

Introducción

En este documento html se va resolver el ejercicio propuesto por el profesor Javier Roca Pardiñas sobre el manejo de las estrúcturas básicas de R.
En un estudio se ha preguntado a 10 personas sobre su intención de voto en relación a unas elecciones donde se presentan 3 partidos político (P1,P2 y P3) obteniéndose los siguientes datos

Apartado 1

Creamos el data.frame

id<-c(3,4,5,7,2,8,9,6,10,1)
voto1<-c("P1","P1","P3","P2","P3","P2","P3","P3","P2","P3")
voto1<-as.factor(voto1)
sexo<-c("mujer","hombre","mujer","hombre","hombre","hombre","hombre","hombre","mujer","hombre")
sexo<-as.factor(sexo)
edad<-c(49,50,64,NA,59,64,62,51,20,59)
R1<-data.frame(id,voto1,sexo,edad)
R1
##    id voto1   sexo edad
## 1   3    P1  mujer   49
## 2   4    P1 hombre   50
## 3   5    P3  mujer   64
## 4   7    P2 hombre   NA
## 5   2    P3 hombre   59
## 6   8    P2 hombre   64
## 7   9    P3 hombre   62
## 8   6    P3 hombre   51
## 9  10    P2  mujer   20
## 10  1    P3 hombre   59

Apartado 2

Ordena los datos anteriores de menor a mayor de forma que queden ordenados primero por id, después por sexo y finalmente por edad.

  #Ordenamos los datos seg?n id, de menor a mayor

ii<-order(id)
R1<-R1[ii,]

    #Ordenamos los datos por sexo

iii<-order(R1$sexo)
R1<-R1[iii,]

    #Ordenamos los datos por edad, de menor a mayor

i4<-order(R1$edad)
R1<-R1[i4,]

Apartado 3

Actualiza R1 (obtenido en el primer apartado) de forma que contenga los datos ordenados en el punto anterior

 #Ordenamos los datos seg?n id, de menor a mayor

ii<-order(id)
R1<-R1[ii,]
R1
##    id voto1   sexo edad
## 10  1    P3 hombre   59
## 5   2    P3 hombre   59
## 1   3    P1  mujer   49
## 2   4    P1 hombre   50
## 3   5    P3  mujer   64
## 8   6    P3 hombre   51
## 4   7    P2 hombre   NA
## 6   8    P2 hombre   64
## 7   9    P3 hombre   62
## 9  10    P2  mujer   20
  #Ordenamos los datos por sexo

iii<-order(R1$sexo)
R1<-R1[iii,]
R1
##    id voto1   sexo edad
## 10  1    P3 hombre   59
## 5   2    P3 hombre   59
## 2   4    P1 hombre   50
## 8   6    P3 hombre   51
## 4   7    P2 hombre   NA
## 6   8    P2 hombre   64
## 7   9    P3 hombre   62
## 1   3    P1  mujer   49
## 3   5    P3  mujer   64
## 9  10    P2  mujer   20
    #Ordenamos los datos por edad, de menor a mayor

i4<-order(R1$edad)
R1<-R1[i4,]

R1
##    id voto1   sexo edad
## 9  10    P2  mujer   20
## 1   3    P1  mujer   49
## 2   4    P1 hombre   50
## 8   6    P3 hombre   51
## 10  1    P3 hombre   59
## 5   2    P3 hombre   59
## 7   9    P3 hombre   62
## 6   8    P2 hombre   64
## 3   5    P3  mujer   64
## 4   7    P2 hombre   NA

Apartado 4

Actualiza R1 de forma que el orden de las columnas sea: id, edad, sexo, voto.

R1<-R1[,c(1,4,3,2)]
R1
##    id edad   sexo voto1
## 9  10   20  mujer    P2
## 1   3   49  mujer    P1
## 2   4   50 hombre    P1
## 8   6   51 hombre    P3
## 10  1   59 hombre    P3
## 5   2   59 hombre    P3
## 7   9   62 hombre    P3
## 6   8   64 hombre    P2
## 3   5   64  mujer    P3
## 4   7   NA hombre    P2

Apartado 5

Guarda los valores de resultados en un fichero con formato csv. Comprueba que el fichero se lee correctamente desde la hoja de cálculo Excel

write.csv2(R1,file="R1.csv")

Apartado 6

Obtén una tabla de frecuencias el número de votantes en función de su sexo y su edad.Además, calcula la frecuencia de voto de cada uno de los partidos en función del sexo.

tabla<-table(sexo,edad)
tabla1<-table(voto1,sexo)
tabla
##         edad
## sexo     20 49 50 51 59 62 64
##   hombre  0  0  1  1  2  1  1
##   mujer   1  1  0  0  0  0  1
tabla1
##      sexo
## voto1 hombre mujer
##    P1      1     1
##    P2      2     1
##    P3      4     1

Apartado 7

Calcula la edad media de los votantes de cada partido diferenciando por sexo. Los resultados serán mostrados en el siguiente formato

i<-sexo=="mujer"
edad1<-edad[i]
voto11<-voto1[i]
tabla<-tapply(edad1,voto11,mean,na.rm=T)
edad2<-edad[!i]
voto12<-voto1[!i]
tabla1<-tapply(edad2,voto12,mean,na.rm=T)
edadmedia<-data.frame(tabla,tabla1)
names(edadmedia)[1]<-paste("mujer")
names(edadmedia)[2]<-paste("hombre")
edadmedia<-t(edadmedia)
edadmedia
##        P1 P2    P3
## mujer  49 20 64.00
## hombre 50 64 57.75

Apartado 8

Divide el los datos R1 en función de sexo (hombre y mujer) utilizando la función split de R.

A<-split(R1,sexo)
A
## $hombre
##    id edad   sexo voto1
## 1   3   49  mujer    P1
## 8   6   51 hombre    P3
## 10  1   59 hombre    P3
## 5   2   59 hombre    P3
## 7   9   62 hombre    P3
## 6   8   64 hombre    P2
## 4   7   NA hombre    P2
## 
## $mujer
##   id edad   sexo voto1
## 9 10   20  mujer    P2
## 2  4   50 hombre    P1
## 3  5   64  mujer    P3

Apartado 9

Construye un nuevo data.frame llamado R2 que contenga la información de las dos elecciones utilizando id como variable de unión.

idn<-c(8,5,9,4,10,2,7,3,1,6)
voto2<-c("P3","P2","P1","P3","P2","P3","P1","P1","P2","P3")
voto2<-as.factor(voto2)
i5<-order(idn)
voto2<-voto2[i5]

id<-c(3,4,5,7,2,8,9,6,10,1)
voto1<-c("P1","P1","P3","P2","P3","P2","P3","P3","P2","P3")
voto1<-as.factor(voto1)
sexo<-c("mujer","hombre","mujer","hombre","hombre","hombre","hombre","hombre","mujer","hombre")
sexo<-as.factor(sexo)
edad<-c(49,50,64,NA,59,64,62,51,20,59)


ii<-order(id)
id<-id[ii]
voto1<-voto1[ii]
sexo<-sexo[ii]
edad<-edad[ii]

R2<-data.frame(id,edad,sexo,voto1,voto2)
R2
##    id edad   sexo voto1 voto2
## 1   1   59 hombre    P3    P2
## 2   2   59 hombre    P3    P3
## 3   3   49  mujer    P1    P1
## 4   4   50 hombre    P1    P3
## 5   5   64  mujer    P3    P2
## 6   6   51 hombre    P3    P3
## 7   7   NA hombre    P2    P1
## 8   8   64 hombre    P2    P3
## 9   9   62 hombre    P3    P1
## 10 10   20  mujer    P2    P2

Apartado 10

Calcula la proporción de votantes que han cambiado su voto. Repite el punto anterior diferenciando ahora por el voto emitido en las primeras elecciones (es decir por voto1).

# 10.1) Proporci?n de votantes que cambiaron de voto
  n1<-length(which(voto1!=voto2))
    n<-length(voto1)
    proporcion<-n1/n
    proporcion
## [1] 0.6
# 10.2)
    cambianP1<-length(which(voto1!=voto2 & voto1=="P1"))
    n<-length(voto1)
    proporcionP1<-cambianP1/n
    proporcionP1        #Proporci?n de votantes que votaban a P1 y se han cambiado
## [1] 0.1
    cambianP2<-length(which(voto1!=voto2 & voto1=="P2"))
    n<-length(voto1)
    proporcionP2<-cambianP2/n
    proporcionP2        #Proporci?n de votantes que votaban a P2 y se han cambiado
## [1] 0.2
    cambianP3<-length(which(voto1!=voto2 & voto1=="P3"))
    n<-length(voto1)
    proporcionP3<-cambianP3/n
    proporcionP3        #Proporci?n de votantes que votaban a P3 y se han cambiado
## [1] 0.3