Espacio "presencial": 16 horas de clases teóricas/prácticas
Participar durante la clase a través del chat de zoom o pedir la palabra.
Examen opcional
Dedicación: durante el curso y después ... es la clave
Comunicación: foro y mail
Introducción al lenguaje R mediante RStudio
Manejar un gran conjunto de funciones: básicas y más avanzadas
Generar autonomía para usar R y seguir aprendiendo después del curso
Aprender a programar en R a través de la lógica tidyverse para lograr rápidamente:
Trabajar con datos reales e interesantes.
Procesar y transformar los datos.
Crea visualizaciones atractivas e informativas.
Programa estadístico: análisis
Lenguaje de programación: sintaxis
Software gratuito, se desacarga desde CRAN.
Software libre: licencia GNU. Libertad de uso, modificación y distribución.
Comunidad mundial: lo usa y mejora. Casi 20.000 paquetes en CRAN) y github
Comunidad en Uruguay: meetup R-Ladies y meetup GURU
Al inicio suele ser empinada
El curso busca guiarlos por un camino menos empinado
Al abrir RStudio vemos el panel llamado "Console" que es la consola de R.
R inicia con un mensaje de apertura que indica entre otras cosas, la versión.
Es un lenguaje de programación: escribimos código en la consola para darle órdenes a R.
Las órdenes elementales de R consisten en expresiones o asignaciones.
Es un lenguaje de programación: escribimos código en la consola para darle órdenes a R.
Las órdenes elementales de R consisten en expresiones o asignaciones.
2 + 3
[1] 5
Es un lenguaje de programación: escribimos código en la consola para darle órdenes a R.
Las órdenes elementales de R consisten en expresiones o asignaciones.
2 + 3
[1] 5
x <- 2 + 3
x <- 2 + 3
x <- 2 + 3
x <- 2 + 3
x
[1] 5
18 + 9
[1] 27
18 - 9
[1] 9
18 * 9
[1] 162
18 / 9
[1] 2
¿Cuánto gasté en el super?
¿Cuánto gasté en pesos uruguayos?
Escribe la cuenta en la consola de R
# valor absolutoabs(-1)
[1] 1
# valor absolutoabs(-1)
[1] 1
# valor absolutoabs(-1)
[1] 1
# exponencialexp(0)
[1] 1
# valor absolutoabs(-1)
[1] 1
# exponencialexp(0)
[1] 1
# raíz cuadradasqrt(9)
[1] 3
?sqrt help("sqrt")
La ventana de script colorea y autocompleta código. Muestra el help de la función.
(teclado en español)
(teclado en español)
La cantidad de clases de objetos es muy grande y crece permanentemente a medida que se crean nuevos paquetes.
Objeto | Dimensión o largo | Tipo de elementos | Ejemplo |
---|---|---|---|
Vector | length() | homogéneos | |
Matriz | dim() | homogéneos | |
Marco de datos | dim() | heterogéneos | |
Lista | length() | heterogéneos | |
x <- c(15, 16, 17, 19)
x <- c(15, 16, 17, 19)
x
[1] 15 16 17 19
x <- c(15, 16, 17, 19)
x
[1] 15 16 17 19
class(x)
[1] "numeric"
Se crea con la función c(), y contiene solo números separados por coma.
El separador de decimales es el punto.
Para el caso de texto, la clase "character" es la que utiliza R para manejar este tipo de objetos.
Al igual que en la mayoría de los lenguajes de programación, R utiliza las comillas dobles (") o simples (') para delimitar un string.
w <- c("lunes", "martes", "miércoles", "viernes")
Para el caso de texto, la clase "character" es la que utiliza R para manejar este tipo de objetos.
Al igual que en la mayoría de los lenguajes de programación, R utiliza las comillas dobles (") o simples (') para delimitar un string.
w <- c("lunes", "martes", "miércoles", "viernes")
w
[1] "lunes" "martes" "miércoles" "viernes"
Para el caso de texto, la clase "character" es la que utiliza R para manejar este tipo de objetos.
Al igual que en la mayoría de los lenguajes de programación, R utiliza las comillas dobles (") o simples (') para delimitar un string.
w <- c("lunes", "martes", "miércoles", "viernes")
w
[1] "lunes" "martes" "miércoles" "viernes"
class(w)
[1] "character"
character
también puede incluir números siempre que estén entre comillasw <- c("15", "16", "17", "19")
character
también puede incluir números siempre que estén entre comillasw <- c("15", "16", "17", "19")
w
[1] "15" "16" "17" "19"
character
también puede incluir números siempre que estén entre comillasw <- c("15", "16", "17", "19")
w
[1] "15" "16" "17" "19"
class(w)
[1] "character"
x1 <- c(2, 8, 3, 4, 1)x2 <- c(0, 7, 5, 5, 6, 1)pmax(x1, x2)
Warning in pmax(x1, x2): an argument will be fractionally recycled
[1] 2 8 5 5 6 2
Si en vez de
aparece el símbolo
hay una sentencia no finalizada.
Crea un objeto llamado nombre
con tu nombre escrito todo en minúscula
<br
Crea un objeto llamado apellido
con tu apellido escrito todo en minúscula
Crea un objeto llamado edad
con tu edad en números
Pregunta la clase de cada uno de esos objetos e imprime el contenido de cada objeto.
Crea un objeto llamado nombre_completo
que contenga tu nombre y tu apellido, reutilizando los objetos creados. La función paste() puede ser de ayuda.
¿Cuántos caracteres tiene el objeto nombre, y el objeto apellido? La función nchar()
puede ser de ayuda.
z <- c("lunes", 15)
z <- c("lunes", 15)
z
[1] "lunes" "15"
class(z)
[1] "character"
z <- c("lunes", 15)
z
[1] "lunes" "15"
class(z)
[1] "character"
Si se combinan objetos de diferentes tipos, R reasigna los elementos a la clase apropiada. Esto se llama coerción.
character
.
character
.
character
.
character
.
mean(x)w + 5
R vectoriza las operaciones de manera que si sumo un número a un vector numérico, a cada elemento del vector le sumará ese número.
Esta propiedad es una ventaja ya que permite evitar loops en muchas de situaciones y de esta manera se obtiene un código más 'limpio' y eficiente.
El operador : sirve para generar vectores numéricos
x <- -1:4x
[1] -1 0 1 2 3 4
x + 5 # adiciono 5
[1] 4 5 6 7 8 9
x * 3 # multiplico por 3
[1] -3 0 3 6 9 12
df <- data.frame(x, w)
df <- data.frame(x, w)
df <- data.frame(x, w)
Trabajaremos con los datos de alojamientos en Barcelona de Airbnb al 10 de enero de 2020. Son datos abiertos disponibles en http://insideairbnb.com/get-the-data.html.
Son datos abiertos con licencia Creative Commons CC0 1.0 Universal "Public Domain Dedication.
Archivos | Descripción |
---|---|
listings.csv | listado de alojamientos disponibles |
reviews.csv | evaluaciones de personas alojadas |
neighbourhoods.csv | listado de barrios |
neighbourhoods.geojson | información geográfica de los barrios |
Quienes se hospedan pueden elegir entre casas/apartamentos enteros, solo cuartos privados o cuartos compartidos (room_type).
Luego de la estadía deben dejar una evaluación (review).
Los alojamientos varían en precio, mínimo de días de estadía, los días disponible, etc.
Lisboa
listado <- read.csv("data/listings.csv", stringsAsFactors = FALSE)
host_id | neighbourhood_group | latitude | longitude | room_type | price |
---|---|---|---|---|---|
71615 | Eixample | 41.40420 | 2.17306 | Entire home/apt | 60 |
90417 | Sant Martí | 41.41203 | 2.22114 | Entire home/apt | 210 |
136853 | Gràcia | 41.40950 | 2.15938 | Entire home/apt | 52 |
136853 | Gràcia | 41.40928 | 2.16112 | Entire home/apt | 58 |
141199 | Les Corts | 41.38720 | 2.14088 | Private room | 35 |
# ver el objeto en otra ventanaView(listado)
Las funciones dim(), names() y str() admiten un data frame como argumento.
dim(listado) # cantidad de filas y columnasnrow(listado) # cantidad de filasncol(listado) # cantidad de columnas
Las funciones dim(), names() y str() admiten un data frame como argumento.
dim(listado) # cantidad de filas y columnasnrow(listado) # cantidad de filasncol(listado) # cantidad de columnas
names(listado) # nombre de variables
Las funciones dim(), names() y str() admiten un data frame como argumento.
dim(listado) # cantidad de filas y columnasnrow(listado) # cantidad de filasncol(listado) # cantidad de columnas
names(listado) # nombre de variables
str(listado) # estructura de la base
Las funciones dim(), names() y str() admiten un data frame como argumento.
dim(listado) # cantidad de filas y columnasnrow(listado) # cantidad de filasncol(listado) # cantidad de columnas
names(listado) # nombre de variables
str(listado) # estructura de la base
La función summary() admite un data frame como argumento pero también una variable.
summary(listado) # resumen descriptivo de variables
Para acceder a una variable de un data frame es necesario escribir <objeto>$<variable>
# Máximomax(listado$price)
[1] 15000
# Mínimomin(listado$price)
[1] 0
# Promediomean(listado$price)
[1] 129.7599
# Medianamedian(listado$price)
[1] 60
# Varianzavar(listado$price)
[1] 194775.5
# Desvío estándarsd(listado$price)
[1] 441.3338
Cargar el archivo listings.csv
de Barcelona.
Calcular la media, mediana y varianza de las variables minimum_nights
, number_of_reviews
, last_review
.
Conjunto de paquetes para:
Importar
Limpiar y transformar
Procesar y analizar
Visualizar
Proporciona una forma unificada, armoniosa y más poderosa de trabajar con datos que la que ofrece el paquete base.
Archivos de texto planoVisualizar (txt, csv, tsv)
Formatos propietariosVisualizar (dta, sav)
Archivos Excel (xls, xlsx)
Paquete jsolite, archivos JSON (JavaScript Object Notation)
Trasformar estructura de datos
Manipular texto
Manipular fechas
Manipular data frame
Gráficos y mapas
Modelización
# instalar desde el CRANinstall.packages("readr")# instalar desde github# devtools::install_github("username/packagename")devtools::install_github("tidyverse/readr")# cargarlibrary(readr)
library(readr)listado <- read_csv("data/listings.csv")# ver el objeto en la consola, ya no muestra hasta 1000 filaslistado
# A tibble: 20,708 x 16 id name host_id host_name neighbourhood_g… neighbourhood latitude <dbl> <chr> <dbl> <chr> <chr> <chr> <dbl> 1 18674 Huge… 71615 Mireia A… Eixample la Sagrada F… 41.4 2 23197 Foru… 90417 Etain (M… Sant Martí el Besòs i e… 41.4 3 31958 Gaud… 136853 Fidelio Gràcia el Camp d'en… 41.4 4 32471 Gaud… 136853 Fidelio Gràcia el Camp d'en… 41.4 5 32615 Sunn… 141199 Inge Les Corts les Corts 41.4 6 32711 Sagr… 135703 Nick Gràcia el Camp d'en… 41.4 7 34241 Priv… 73163 Andres Ciutat Vella el Barri Gòt… 41.4 8 34981 VIDR… 73163 Andres Ciutat Vella el Barri Gòt… 41.4 9 35379 Doub… 152232 Pablo Eixample l'Antiga Esq… 41.410 35390 Sing… 152232 Pablo Eixample l'Antiga Esq… 41.4# … with 20,698 more rows, and 9 more variables: longitude <dbl>,# room_type <chr>, price <dbl>, minimum_nights <dbl>,# number_of_reviews <dbl>, last_review <date>, reviews_per_month <dbl>,# calculated_host_listings_count <dbl>, availability_365 <dbl>
Instalar el paquete readr
.
Cargar el paquete readr
.
Importar el archivo listings.csv
.
\\
Espacio "presencial": 16 horas de clases teóricas/prácticas
Participar durante la clase a través del chat de zoom o pedir la palabra.
Examen opcional
Dedicación: durante el curso y después ... es la clave
Comunicación: foro y mail
Keyboard shortcuts
↑, ←, Pg Up, k | Go to previous slide |
↓, →, Pg Dn, Space, j | Go to next slide |
Home | Go to first slide |
End | Go to last slide |
Number + Return | Go to specific slide |
b / m / f | Toggle blackout / mirrored / fullscreen mode |
c | Clone slideshow |
p | Toggle presenter mode |
t | Restart the presentation timer |
?, h | Toggle this help |
Esc | Back to slideshow |