1.2 Práctica Guiada
1.2.1 Instalación de paquetes complementarios al R Base
Hasta aquí hemos visto múltiples funciones que están contenidas dentro del lenguaje básico de R. Ahora bien, al tratarse de un software libre, los usuarios de R con más experiencia contribuyen sistemáticamente a expandir este lenguaje mediante la creación y actualización de paquetes complementarios. Lógicamente, los mismos no están incluidos en la instalación inicial del programa, pero podemos descargarlos e instalarlos al mismo tiempo con el siguiente comando:
install.packages("nombre_del_paquete")
Resulta recomendable ejecutar este comando desde la consola ya que sólo necesitaremos correrlo una vez en nuestra computadora. Al ejecutar el mismo, se descargarán de la pagina de CRAN los archivos correspondientes al paquete hacia el directorio en donde hayamos instalado el programa. Típicamente los archivos se encontrarán en C:\Program Files\R\R-3.5.0\library\
, siempre con la versión del programa correspondiente.
Una vez instalado el paquete, cada vez que abramos una nueva sesión de R y querramos utilizar el mismo debemos cargarlo al ambiente de trabajo mediante la siguiente función:
library(nombre_del_paquete)
Nótese que al cargar/activar el paquete no son necesarias las comillas.
1.2.2 Lectura y escritura de archivos
1.2.2.1 .csv y .txt
Hay muchas funciones para leer archivos de tipo .txt y .csv. La mayoría sólo cambia los parámetros que vienen por default.
Es importante tener en cuenta que una base de datos que proviene de archivos .txt, o .csv puede presentar diferencias en cuanto a los siguientes parámetros:
- encabezado
- delimitador (
,
, tab,;
) - separador decimal
dataframe <- read.delim(file, header = TRUE, sep = "\t", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)
Ejemplo. Levantar la base de sueldos de funcionarios
En el parametro file
tengo que especificar el nombre completo del archivo, incluyendo el directorio donde se encuentra. Lo más sencillo es abrir comillas, apretar Tab
y se despliega el menú de las cosas que tenemos en el directorio de trabajo. Si queremos movernos hacia arriba, agregamos ../
sueldos_funcionarios <- read.table(file = 'fuentes/sueldo_funcionarios_2019.csv',sep=",", header = TRUE)
sueldos_funcionarios[1:10,]
## cuil anio mes funcionario_apellido funcionario_nombre
## 1 20-17692128-6 2019 1 RODRIGUEZ LARRETA HORACIO ANTONIO
## 2 20-17735449-0 2019 1 SANTILLI DIEGO CESAR
## 3 27-24483014-0 2019 1 ACUÑA MARIA SOLEDAD
## 4 20-13872301-2 2019 1 ASTARLOA GABRIEL MARIA
## 5 20-25641207-2 2019 1 AVOGADRO ENRIQUE LUIS
## 6 27-13221055-7 2019 1 BOU PEREZ ANA MARIA
## 7 27-13092400-5 2019 1 FREDA MONICA BEATRIZ
## 8 20-17110752-1 2019 1 MACCHIAVELLI EDUARDO ALBERTO
## 9 20-22293873-3 2019 1 MIGUEL FELIPE OSCAR
## 10 20-14699669-9 2019 1 MOCCIA FRANCO
## repartición asignacion_por_cargo_i
## 1 Jefe de Gobierno 197745.8
## 2 Vicejefatura de Gobierno 197745.8
## 3 Ministerio de Educación e Innovación 224516.6
## 4 Procuración General de la Ciudad de Buenos Aires 224516.6
## 5 Ministerio de Cultura 224516.6
## 6 Ministerio de Salud 224516.6
## 7 Sindicatura General de la Ciudad de Buenos Aires 224516.6
## 8 Ministerio de Ambiente y Espacio Público 224516.6
## 9 Jefatura de Gabinete de Ministros 224516.6
## 10 Ministerio de Desarrollo Urbano y Transporte 224516.6
## aguinaldo_ii total_salario_bruto_i_._ii observaciones
## 1 0 197745.8
## 2 0 197745.8
## 3 0 224516.6
## 4 0 224516.6
## 5 0 224516.6
## 6 0 224516.6
## 7 0 224516.6
## 8 0 224516.6
## 9 0 224516.6
## 10 0 224516.6
Como puede observarse aquí, la base cuenta con 94 registros y 10 variables.
Al trabajar con bases de microdatos, resulta conveniente contar con algunos comandos para tener una mirada rápida de la base, antes de comenzar a realizar los procesamientos que deseemos.
Veamos algunos de ellos:
## [1] "cuil" "anio"
## [3] "mes" "funcionario_apellido"
## [5] "funcionario_nombre" "repartición"
## [7] "asignacion_por_cargo_i" "aguinaldo_ii"
## [9] "total_salario_bruto_i_._ii" "observaciones"
## cuil anio mes funcionario_apellido
## 20-13872301-2: 3 Min. :2019 Min. :1.00 ACUÑA : 3
## 20-14699669-9: 3 1st Qu.:2019 1st Qu.:2.00 ASTARLOA : 3
## 20-16891528-5: 3 Median :2019 Median :3.00 AVELLANEDA: 3
## 20-16891539-0: 3 Mean :2019 Mean :3.34 AVOGADRO : 3
## 20-17110752-1: 3 3rd Qu.:2019 3rd Qu.:5.00 BENEGAS : 3
## 20-17692128-6: 3 Max. :2019 Max. :6.00 BOU PEREZ : 3
## (Other) :76 (Other) :76
## funcionario_nombre
## ANA MARIA : 3
## BRUNO GUIDO : 3
## CHRISTIAN : 3
## DIEGO CESAR : 3
## DIEGO HERNAN : 3
## EDUARDO ALBERTO: 3
## (Other) :76
## repartición
## Consejo de los Derechos de Niñas, Niños y Adoles - Presidencia: 3
## Ente de Turismo Ley Nº 2627 : 3
## Jefatura de Gabinete de Ministros : 3
## Jefe de Gobierno : 3
## Ministerio de Ambiente y Espacio Público : 3
## Ministerio de Cultura : 3
## (Other) :76
## asignacion_por_cargo_i aguinaldo_ii total_salario_bruto_i_._ii
## Min. :197746 Min. : 0 Min. :197746
## 1st Qu.:217520 1st Qu.: 0 1st Qu.:217805
## Median :226866 Median : 0 Median :226866
## Mean :224718 Mean : 14843 Mean :239560
## 3rd Qu.:231168 3rd Qu.: 0 3rd Qu.:248033
## Max. :249662 Max. :113433 Max. :340300
##
## observaciones
## :93
## baja 28/2/2019: 1
##
##
##
##
##
## cuil anio mes funcionario_apellido funcionario_nombre
## 1 20-17692128-6 2019 1 RODRIGUEZ LARRETA HORACIO ANTONIO
## 2 20-17735449-0 2019 1 SANTILLI DIEGO CESAR
## 3 27-24483014-0 2019 1 ACUÑA MARIA SOLEDAD
## 4 20-13872301-2 2019 1 ASTARLOA GABRIEL MARIA
## 5 20-25641207-2 2019 1 AVOGADRO ENRIQUE LUIS
## 6 27-13221055-7 2019 1 BOU PEREZ ANA MARIA
1.2.2.2 Excel
Para leer y escribir archivos excel podemos utilizar los comandos que vienen con la librería openxlsx
# install.packages("openxlsx") # por única vez
library(openxlsx) #activamos la librería
# creamos una tabla cualquiera de prueba
x <- 1:10
y <- 11:20
tabla_de_R <- data.frame(x,y)
# escribimos el archivo
write.xlsx(x = tabla_de_R, file = "resultados/archivo.xlsx", row.names = FALSE)
# Donde lo guardó? Hay un directorio por default en caso de que no hayamos definido alguno.
# getwd()
# Si queremos exportar multiples dataframes a un Excel, debemos armar previamente una lista de ellos. Cada dataframe se guardará en una pestaña de excel, cuyo nombre corresponderá al que definamos para cada Dataframe a la hora de crear la lista.
Lista_a_exportar <- list("sueldos funcionarios" = sueldos_funcionarios,
"Tabla Numeros" = tabla_de_R)
write.xlsx(x = Lista_a_exportar, file = "resultados/archivo_2_hojas.xlsx", row.names = FALSE)
# leemos el archivo especificando la ruta (o el directorio por default) y el nombre de la hoja que contiene los datos
Indices_Salario <- read.xlsx(xlsxFile = "resultados/archivo_2_hojas.xlsx", sheet = "sueldos funcionarios")
# alternativamente podemos especificar el número de orden de la hoja que deseamos levantar
Indices_Salario <- read.xlsx(xlsxFile = "resultados/archivo_2_hojas.xlsx", sheet = 1)
Indices_Salario[1:10,]
## cuil anio mes funcionario_apellido funcionario_nombre
## 1 20-17692128-6 2019 1 RODRIGUEZ LARRETA HORACIO ANTONIO
## 2 20-17735449-0 2019 1 SANTILLI DIEGO CESAR
## 3 27-24483014-0 2019 1 ACUÑA MARIA SOLEDAD
## 4 20-13872301-2 2019 1 ASTARLOA GABRIEL MARIA
## 5 20-25641207-2 2019 1 AVOGADRO ENRIQUE LUIS
## 6 27-13221055-7 2019 1 BOU PEREZ ANA MARIA
## 7 27-13092400-5 2019 1 FREDA MONICA BEATRIZ
## 8 20-17110752-1 2019 1 MACCHIAVELLI EDUARDO ALBERTO
## 9 20-22293873-3 2019 1 MIGUEL FELIPE OSCAR
## 10 20-14699669-9 2019 1 MOCCIA FRANCO
## repartición asignacion_por_cargo_i
## 1 Jefe de Gobierno 197745.8
## 2 Vicejefatura de Gobierno 197745.8
## 3 Ministerio de Educación e Innovación 224516.6
## 4 Procuración General de la Ciudad de Buenos Aires 224516.6
## 5 Ministerio de Cultura 224516.6
## 6 Ministerio de Salud 224516.6
## 7 Sindicatura General de la Ciudad de Buenos Aires 224516.6
## 8 Ministerio de Ambiente y Espacio Público 224516.6
## 9 Jefatura de Gabinete de Ministros 224516.6
## 10 Ministerio de Desarrollo Urbano y Transporte 224516.6
## aguinaldo_ii total_salario_bruto_i_._ii observaciones
## 1 0 197745.8
## 2 0 197745.8
## 3 0 224516.6
## 4 0 224516.6
## 5 0 224516.6
## 6 0 224516.6
## 7 0 224516.6
## 8 0 224516.6
## 9 0 224516.6
## 10 0 224516.6