<- c("manzana", "pera", "uva")
supermercado gsub("a", "A", paste("mi", supermercado))
[1] "mi mAnzAnA" "mi perA" "mi uvA"
Santiago Sotelo y Nadia Duffó
Descarga la carpeta .zip para acceder al material de esta sesión. Haga click en el siguiente enlace. No olvides unzipear el archivo.
¿Cómo funciona R?
“Todo lo que existe en R es un objeto, todo lo que sucede en R es una función.”
-John Chambers
R es un lenguaje de programación que tradicionalmente opera como funciones anidadas. Por ejemplo:
[1] "mi mAnzAnA" "mi perA" "mi uvA"
Se podría comparar con una matrioska o muñeca rusa en la medida en que una función encapsula a otra función y así sucesivamente ejecutándose de adentro hacia afuera.
La manera moderna de programar en R es utilizando el operador %>%
o pipeta. El mismo ejemplo se vería así:
library(dplyr)
supermercado <- c("manzana", "pera", "uva")
supermercado %>%
paste("mi", .) %>%
gsub("a", "A", .)
[1] "mi mAnzAnA" "mi perA" "mi uvA"
La pipeta se puede importar desde el paquete {dplyr}
y se puede comparar con una tubería que pasa el resultado hacia la siguiente función, es decir, primero llamamos al objeto supermercado
y luego aplicamos la función paste
, y luego aplicamos la función gsub
. Esta manera de programar se lee de arriba a abajo. El atajo para escribir la pipeta es ctrl
+ shift
+ m
En la práctica utilizaremos una combinación de la manera tradicional y moderna al momento de programar en R.
Para iniciar un proyecto de R nos dirigiremos a la pestaña
File > New Project > New Directory > New Project > Create Project
Luego creamos un nuevo archivo R markdown (.Rmd
), nos dirigimos a la pestaña
File > New File > R Markdown > Ok
Para crear un bloque de código en R podemos hacer click en el ícono verde con la letra C en la barra superior o utilizar el atajo ctrl
+ alt
+ i
Ahora instalamos los paquetes necesarios para el ejercicio de hoy.
La función p_load()
del paquete {pacman}
se utiliza para importar paquetes desde el repositorio virtual CRAN.
En esta clase, se importa la base de datos filmaffinity
que contiene información sobre filmes publicados entre 1900 y 2020. Para mayor información revise el enlace.
La función import()
del paquete {rio}
se utiliza para importar bases de datos en distintos formatos como .xlsx
, .csv
, .sav
, entre otras.
Una vez importada la base de datos a la sesión, es necesario explorarla para familiarizarnos con la información.
La base de filmes cuenta con 119,003 observaciones y 9 variables.
La mayoría de observaciones corresponden al tipo filme con 73,651 observaciones.
Rows: 119,003
Columns: 9
$ ...1 <dbl> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…
$ Título <chr> "'49-'17", "10,000 Years B.C. (C)", "1812", "20.000 legua…
$ Año <dbl> 1917, 1916, 1912, 1907, 1909, 1916, 1912, 1916, 1908, 191…
$ País <chr> "Estados Unidos", "Estados Unidos", "Rusia", "Francia", "…
$ Dirección <chr> "Ruth Ann Baldwin", "Willis H. O'Brien", "Vasili Goncharo…
$ Reparto <chr> "Joseph W. Girard, Leo Pierson, William Dyer, Mattie Witt…
$ Nota <chr> "--", "5,1", "--", "6,0", "5,3", "--", "5,4", "--", "4,6"…
$ `Tipo filme` <chr> "Película", "Cortometraje", "Película", "Cortometraje", "…
$ Género <chr> "Western", "Comedia", "Drama", "Fantástico", "Comedia", "…
En la base de datos se tienen las variables ...1
, Título
, Año
, País
, Dirección
, Reparto
, Nota
, Tipo filme
, Género
.
La primera columna que corresponde al index del filme en la tabla no tiene un nombre inteligible, por lo que procedemos a renombrar esta columna.
La variable Nota actualmente figura como character
en vez de numeric
dado que el punto decimal está representado como una ,
y los valores perdidos como --
. Ajustemos esta variable para poder utilizarla como variable numérica.
filmaffinity3 <-
filmaffinity2 %>%
mutate(
Nota = gsub(",", ".", Nota),
Nota = gsub("--", NA, Nota),
Nota = as.numeric(Nota),
)
filmaffinity3
,
por .
en la columna Nota.
--
por el valor perdido NA
en la columna Nota.
Luego de aplicar este proceso podemos realizar operaciones aritméticas con la variable Nota:
tab1 <-
filmaffinity3 %>%
group_by(`Tipo filme`) %>%
summarise(Nota_promedio = mean(Nota, na.rm =T))
tab1
El promedio de los filmes, considerando los puntuados, para el caso de miniserie es de 6.10.
En el caso de Estados Unidos, si se genera la misma tabla de frecuencias, se obtendría el siguiente resultado:
tab2 <-
filmaffinity3 %>%
filter(País %in% c("Estados Unidos")) %>%
group_by(`Tipo filme`) %>%
summarise(Nota_promedio = mean(Nota, na.rm =T))
tab2
"Estados Unidos"
en la variable País
.
Se observa que, para el caso de miniseries, descendió a 5.99.
Finalmente, para exportar la tabla inicial sobre la nota promedio de los filmes a excel se puede utilizar la siguiente función del paquete {rio}
:
La función export()
del paquete {rio}
se utiliza para exportar bases de datos en distintos formatos como .xlsx
, .csv
, .sav
, entre otras.
Usaremos el mismo procedimiento para exportar la base que limpiamos:
Responda las siguientes preguntas: