Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
Nos familiarizaremos con los conceptos y comandos básicos de programación en R
R es un lenguaje interpretado: ejecuta las instrucciones directamente en la consola
Escribimos comandos en la consola y se ejecutan pulsando Enter
:
La tecla de tabulador ofrece opciones de autocompletado
Ejecutar algo que no es un comando de R devuelve un error
O en el Editor de RStudio y se envían a la consola la o las líneas seleccionadas para ser evaluadas con el icono o con el atajo de teclado Ctrl+Enter
NOTA: en MacOS, usad la tecla Command
en lugar de Ctrl
Es preferible incluir varios comandos en un archivo de texto para ejecutarlos
Se puede replicar el proceso de cálculos paso a paso (no como Excel)
Creamos un nuevo archivo con el icono o en el menú File > New File > R script (atajo Ctrl + Mays + N
)
Guardamos el archivo con o en File > Save (atajo Ctrl + S
), eligiendo un directorio y nombre de extensión “.R” (por defecto) o “.r”
En un archivo de guion (guardado), RStudio marca las líneas con error y muestra el mensaje de error al pasar el puntero
Cada comando es “una” línea y se ejecutan secuencialmente
Un comando se puede extender visualmente más de una línea hasta completarse: p.e., hasta cerrar los paréntesis.
Escribimos log(
, en otra línea 9
y ejecutamos: la consola cambia de >
a +
No hace “nada” esperando que completemos el comando.
#
marca el inicio de un comentario: lo que sigue se “ignora” (no se ejecuta) en RComentar es un buen hábito: ayuda a entender/recordar qué hacemos
Notad que RStudio tiene resaltado de sintaxis: distinto color para comentarios, números, funciones, etc.
Desde el menú File > New Proyect o desde el icono, creamos un nuevo proyecto:
Podemos usar un Nuevo Directorio o elegir una ubicación ya existente
El nombre del proyecto será el nombre del directorio
También se crea un archivo con el mismo nombre y extensión “.Rproj”
Al abrir RStudio, tenemos activo el último proyecto abierto: ej.,
Tanto desde el menú como desde el icono de gestión de proyectos, podemos
cerrar el proyecto actual, File > Close Projects,
abrir otros proyectos guardados: File > Open Project o File > Recent Projects
Para trabajar con un archivo, usamos la ruta relativa al directorio de trabajo:
si están en el raíz del directorio: codigo.R
, misdatos.Rdata
si están en un subdirectorio, indicamos la ruta separando directorios por /
: datos/ventas.Rdata
, datos/ano2020/ingresos.Rdata
La pestaña en el cuadrante inferior-derecho ofrece una forma visual de abrir, crear, copiar, mover o eliminar archivos o directorios, etc.
Evitad caracteres “raros” (acentos, espacios, etc.) en directorios y ficheros
NOTA. El Explorador de Archivos de Windows y Finder de MacOS, no muestran defecto las extensiones de los archivos.
Algunos argumentos son obligatorios, otros tienen valores por defecto que se pueden omitir
Los argumentos se pueden especificar por nombre o por orden.
RStudio tiene autocompletado y ayuda flotante para funciones y otros elementos de R
log
, se muestra la forma esperada de trabajar con esa funciónRStudio también tiene una pestaña para buscar ayuda
Las búsquedas online o las IAs (como chatGPT, Gemini o Copilot) pueden ser útiles.
PERO debemos tener un conocimiento mínimo para aprovechar realmente una solución
NO uséis copiar-pegar sin entender el código: copiar-pensar-adaptar
<-
almacena un contenido en un objeto con un nombre,1 que incluye letras, números y algunos carácteres especiales (“.”, “_”)R es “case-sensitive”: x
y X
son dos objetos distintos
Los objetos asignados pueden usarse posteriormente, p.e., para generar otros a partir de ellos
El espacio de trabajo es el conjunto de objetos activos en memoria, resultado de todos los comandos ejecutados previamente
En RStudio, la pestaña muestra los objetos y su valor
Las funciones ls()
y rm()
muestran y eliminan respectivamente objetos del espacio de trabajo
Environment
o el comando.R
recuperamos los objetosEn programación, cometer errores es normal
En muchos errores, R se “quejará” mostrando mensajes en rojo
Aviso: R ofrece un resultado (y continuará al siguiente comando), PERO indica que puede haber algo “no deseado”
Error: para la ejecución, sin resultado, e “informa” de la razón
Algunos mensajes son claros, pero otros requieren más investigación
Peor que un mensaje de error: escribimos (copiamos) un código que funciona pero no hace lo que queremos…
El ordenador NO se equivoca: hace lo que le pedimos según unas reglas bien definidas por R, que debemos conocer
Además de las funciones, los principales objetos con los que trabajaremos son:
Estos objetos pueden contener varios tipos de datos o variables:
c()
” (combinar)Environment
o con str()
Forzamos que un objeto sea tratado con una clase concreta, con as.integer()
, as.numeric()
, as.character()
y as.logical()
NA
(con un “warning”)NO se pueden realizar operaciones incompatibles entre clases
names()
&
), O (|
) y NO (!
)x %in% Y
es cierto cuando x
es un elemento de Y
[]
(paréntesis cuadrado)1 yPara destacar la naturaleza distinta de estos datos, existe un tipo de objeto específico en R: los factores
Además de otras ventajas que veremos, permiten separar la representación original de las categorías (niveles) de cómo queremos mostrarlas (etiquetas)
Se asocia nivel 1 con “Mujer”, 2 con “Hombre”, etc.
Las operaciones con factores se realiza con las etiquetas, no con los niveles
También podemos usar as.factor()
para convertir un vector en un factor
PERO es conveniente especificar los niveles y las categorías porque si no, R los asigna alfabéticamente
En este caso la etiqueta del primer nivel encontrado en los datos (el número 2) es “1” y la del siguiente nivel (el número 1) es “2”
También podemos tener factores con orden con la opción order = TRUE
y enumerando los niveles en orden
summary()
devuelve los principales estadísticos descriptivos de un vector numéricosummary()
ofrece resultados diferentes según el tipo de objeto (porque tiene distintas propiedades)View(datos)
o en “Enviroment” o una parte con head()
$
o por nombre o posición con [[ ]][]
para seleccionar filas y columnas por posición, nombre y/o condición lógicasubset()
que devuelve siempre un “data frame”rbind()
y cbind()
, respectivamente, a partir de vectores u otros data frames[[ ]]
(por posición o por nombre) o con $
(solo por nombre) extraemos los elementos en su clase original[]
, pero devuelve una listaunlist()
convierte una lista en vector, usando la clase que pueda ajustarse a todos los objetos (elementales) Una biblioteca contiene nuevos objetos de R: funciones, datos, etc.
Para instalar una nueva biblioteca (se hace una vez), en Tools > Install packages o en o con el comando
Mantenemos actualizados los paquetes, en el menú Tools o en
La biblioteca solo está disponible si se carga en la sesión actual
Nota: en adelante, la bibliotecas que carguemos se suponen instaladas
En vemos las bibliotecas instaladas y las cargadas aparecen marcadas
El nombre completo de un objeto es biblioteca::nombre
save()
(en una ruta relativa al directorio de trabajo)load()
(= icono )En la pestaña de : doble-clic carga un archivo de datos
Nota: este tipo de archivo puede contener varios objetos, incluidas varios conjuntos de datos
Varias bibliotecas permiten trabajar con distintos formatos de datos, p.e.:
utils
(R base), readr
readxl
, openxlsx
haven
, foreign
Descargad estos ejemplos (UA cloud): renta.txt, sex_data.csv, beauty.xls, nsw.dta
En de RStudio, tenemos acceso visual para cargar algunos formatos (con la biblioteca necesaria instalada)
rio
es un meta-paquete (instala otras bibliotecas) para importar y exportar varios formatos de datos de forma sencilla
rio
rio
permite trabajar con el mismo comando para todos los formatos, pero las opciones por defecto pueden no ser adecuadas
El comando import()
se usa para leer los datos
export()
convert()
Bibliotecas con datos muy utilizados: pwt
(“Penn World Tables”)
Bibliotecas con funciones para obtener datos online (con APIs públicas)
datos de las OECD
y eurostat
(incluye datos del INE español)
rdbnomics
para los datos gratuitos de https://db.nomics.world/
datos económicos y financieros con quantmod
y tidyquant
quandl
(de pago)
qualtRics
trabaja con software de encuestas qualtrics
Descarga de páginas web y webscraping con las bibliotecas rvest
y httr
(función GET()
)
DBI
accede con Bases de Datos relaciones (SQL)
plot.default
) como type (puntos, líneas, etc.), símbolo de punto (pch), tipo de línea (lty), ancho de línea (lwd), color (col), título, etiquetas de los ejes, etc.par()
, combinar gráficos, añadir líneas, texto, etc. y exportar los gráficostable()
calcula distribuciones de frecuencias de una variable o conjuntas: el resultado es un objetoprop.table()
mean()
, var()
, etc.NA
NA
y la frecuencia total:NA
s es NA
: debemos decir que los elimine explícitamente (y ser conscientes de lo que implica)na.omit()
elimina observaciones con NA
s de una o varias variablesNA
s? Eliminarlos implica selección muestral y la alternativa de imputar valores implica supuestos sobre éstosComo en todo lenguaje de programación R, tiene funciones para
Ejecución condicional if()
: una parte del código se ejecuta solo si se cumple una condición
Bucles for()
: se repite un mismo bloque de código mientras se itera por los valores de vector
Crear funciones propias con function()
Una variante de la ejecución condicional, solo para crear variables según una condición