Cargo la data:
folder="data"
fileName="electores2014.xlsx"
fileToRead=file.path(folder,fileName)
electores2014=openxlsx::read.xlsx(fileToRead,skipEmptyRows=T,skipEmptyCols=T)
Le damos una mirada rápida a la data:
head(electores2014)
## region totalElectores
## 1 AMAZONAS 261856
## 2 ANCASH 817623
## 3 APURIMAC 277161
## 4 AREQUIPA 997238
## 5 AYACUCHO 409671
## 6 CAJAMARCA 992517
Veo estructura:
str(electores2014)
## 'data.frame': 25 obs. of 2 variables:
## $ region : chr "AMAZONAS" "ANCASH" "APURIMAC" "AREQUIPA" ...
## $ totalElectores: num 261856 817623 277161 997238 409671 ...
Ahora empiezo a resolver los siguientes ejercicios:
1. Ordenar
Ordena la data de mayor a menor según el número de votantes.
Para ello usamos order. No olvidar indicar la columna a partir de la cual se hará el ordenamieno y si se desea que el ordenamiento sea en orden ascendente (por defecto) o descendente:
electores2014[order(electores2014$totalElectores,decreasing = T),]
## region totalElectores
## 15 LIMA 7295063
## 13 LA LIBERTAD 1248026
## 20 PIURA 1226900
## 4 AREQUIPA 997238
## 6 CAJAMARCA 992517
## 8 CUSCO 880889
## 14 LAMBAYEQUE 858177
## 12 JUNIN 852097
## 21 PUNO 841046
## 2 ANCASH 817623
## 7 CALLAO 712596
## 16 LORETO 615249
## 11 ICA 563023
## 22 SAN MARTIN 545521
## 10 HUANUCO 509995
## 5 AYACUCHO 409671
## 25 UCAYALI 319790
## 3 APURIMAC 277161
## 9 HUANCAVELICA 274992
## 1 AMAZONAS 261856
## 23 TACNA 246256
## 19 PASCO 183296
## 24 TUMBES 152314
## 18 MOQUEGUA 130067
## 17 MADRE DE DIOS 90542
2. Cortar
electores2014[electores2014$totalElectores==min(electores2014$totalElectores),]$region
## [1] "MADRE DE DIOS"
Creo una nueva variable, zona, para poner si el departamento está en la costa, en la sierra o en la selva:
electores2014$zona=c("Selva","Costa","Sierra","Costa","Sierra","Sierra","Costa","Sierra","Sierra","Selva","Costa","Sierra","Costa","Costa","Costa","Selva","Selva","Costa","Sierra","Costa","Sierra","Selva","Costa","Costa","Selva")
str(electores2014$zona)
## chr [1:25] "Selva" "Costa" "Sierra" "Costa" "Sierra" "Sierra" "Costa" ...
table(electores2014$zona)
##
## Costa Selva Sierra
## 11 6 8
Respondo la pregunta.
PASO 1: Creo un subset con las regiones de la sierra
electores2014_sierra=electores2014[electores2014$zona=='Sierra',]
electores2014_sierra
## region totalElectores zona
## 3 APURIMAC 277161 Sierra
## 5 AYACUCHO 409671 Sierra
## 6 CAJAMARCA 992517 Sierra
## 8 CUSCO 880889 Sierra
## 9 HUANCAVELICA 274992 Sierra
## 12 JUNIN 852097 Sierra
## 19 PASCO 183296 Sierra
## 21 PUNO 841046 Sierra
PASO 2: Hallo la región de la sierra con el mayor número de electores
electores2014_sierra[electores2014_sierra$totalElectores==max(electores2014_sierra$totalElectores),]$region
## [1] "CAJAMARCA"
PASO 1: Creo subset con regiones de la costa:
electores2014_costa=electores2014[electores2014$zona=='Costa',]
electores2014_costa
## region totalElectores zona
## 2 ANCASH 817623 Costa
## 4 AREQUIPA 997238 Costa
## 7 CALLAO 712596 Costa
## 11 ICA 563023 Costa
## 13 LA LIBERTAD 1248026 Costa
## 14 LAMBAYEQUE 858177 Costa
## 15 LIMA 7295063 Costa
## 18 MOQUEGUA 130067 Costa
## 20 PIURA 1226900 Costa
## 23 TACNA 246256 Costa
## 24 TUMBES 152314 Costa
PASO 2: Ordeno la data de menor a mayor según total de electores. Guardo este ordenamiento en un nuevo objeto, costaOrdenado:
costaOrdenado=electores2014_costa[order(electores2014_costa$totalElectores),]
PASO 3: Obtengo las tres regiones de la costa con menor número de electores:
head(costaOrdenado,3)
## region totalElectores zona
## 18 MOQUEGUA 130067 Costa
## 24 TUMBES 152314 Costa
## 23 TACNA 246256 Costa
PASO 1: Creo subset con regiones de la selva:
electores2014_selva=electores2014[electores2014$zona=='Selva',]
electores2014_selva
## region totalElectores zona
## 1 AMAZONAS 261856 Selva
## 10 HUANUCO 509995 Selva
## 16 LORETO 615249 Selva
## 17 MADRE DE DIOS 90542 Selva
## 22 SAN MARTIN 545521 Selva
## 25 UCAYALI 319790 Selva
PASO 2: Ordeno las regiones de la selva en orden decreciente según su número de electores para las ERM 2014. Guardo este ordenamiento en un nuevo objeto, selvaOrdenado:
selvaOrdenado=electores2014_selva[order(-electores2014_selva$totalElectores),]
PASO 3 [Resultado Final]: Obtengo en un solo código las regiones de la selva con el mayor y el menor número de electores para las ERM 2014:
selvaOrdenado[c(1,nrow(selvaOrdenado)),]
## region totalElectores zona
## 16 LORETO 615249 Selva
## 17 MADRE DE DIOS 90542 Selva
costaOrdenado[-c(1,nrow(costaOrdenado)),]
## region totalElectores zona
## 24 TUMBES 152314 Costa
## 23 TACNA 246256 Costa
## 11 ICA 563023 Costa
## 7 CALLAO 712596 Costa
## 2 ANCASH 817623 Costa
## 14 LAMBAYEQUE 858177 Costa
## 4 AREQUIPA 997238 Costa
## 20 PIURA 1226900 Costa
## 13 LA LIBERTAD 1248026 Costa
PASO 1: Ordeno las regiones de la sierra en orden decreciente según su número de electores para las ERM 2014. Guardo este ordenamiento en un nuevo objeto, sierraOrdenado:
sierraOrdenado=electores2014_sierra[order(-electores2014_sierra$totalElectores),]
PASO 2: [Resultado Final]: Obtengo en un solo código las dos regiones de la sierra con el mayor número de electores y las dos regiones de la sierra con el menor número de electores para las ERM 2014:
rbind(head(sierraOrdenado,2),tail(sierraOrdenado,2))
## region totalElectores zona
## 6 CAJAMARCA 992517 Sierra
## 8 CUSCO 880889 Sierra
## 9 HUANCAVELICA 274992 Sierra
## 19 PASCO 183296 Sierra