Ejercicios de Manipulación Básica de Data Frames [Solucionario]

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

  1. ¿Cuál es la región con menor número de electores para las ERM 2014?
electores2014[electores2014$totalElectores==min(electores2014$totalElectores),]$region
## [1] "MADRE DE DIOS"
  1. ¿Cuál es la región de la sierra con mayor número de electores para las ERM 2014? [Para responder esta pregunta y las siguientes, cree una nueva variable, llamada zona, con tres categorías: Costa, Sierra y Selva]

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"
  1. ¿Cuáles son las tres regiones de la costa con menor número de electores para las ERM 2014?

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
  1. ¿Cuáles son las regiones de la selva con el mayor y el menor número de electores para las ERM 2014, respectivamente? [Brindar la respuesta final ejecutando un solo código en R]

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
  1. De las regiones de la costa, ¿cuáles están entre la región con el menor número de electores y la región con el mayor número de electores para las ERM 2014? [Brindar la respuesta final ejecutando un solo código en R]
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
  1. De las regiones de la sierra, ¿cuáles son las dos regiones con el mayor número de electores y las dos regiones con el menor número de electores para las ERM 2014? [Brindar la respuesta final ejecutando un solo código de R]

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