diff --git a/inst/tutorials/introduccion/introduccion.Rmd b/inst/tutorials/introduccion/introduccion.Rmd new file mode 100644 index 0000000..a582c1e --- /dev/null +++ b/inst/tutorials/introduccion/introduccion.Rmd @@ -0,0 +1,248 @@ +--- +title: "Sesión 1: Introducción" +output: + learnr::tutorial: + language: es + css: https://storage.googleapis.com/datos_cursos/ixpantia_introR/intro_r.css +runtime: shiny_prerendered +description: > + Introducción general a R y RStudio acompañada de ejercicios rápidos. +--- + + + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE) +library(learnr) +library(dplyr) +library(gradethis) +library(datos) +y <- 10:100 +notas <- c(67, 89, 95, 92, 71, 84, 100, 97) + +tutorial_options(exercise.checker = gradethis::grade_learnr) +``` + +## Descripción general + +R es uno de los lenguajes de programación estadística más populares en +el mundo. Permite hacer una gran variedad de análisis y productos +de datos, por lo que resulta ser una herramienta muy poderosa para +profesionales en diversas áreas. + +A continuación mostramos los conceptos básicos de R: + +### Crear objetos + +En R para crear un objeto utilizamos el símbolo `<-` (también se +puede utilizar `=`). + +**Ejemplo**: crear un objeto llamado "temperatura" que contenga el número 36. + +```{r ejemplo_asignacion} +temperatura <- 36 +``` + +### Funciones + +Las funciones son una serie de pasos o procedimientos que se +encapsulan en un mismo lugar para que escribir código sea más +eficiente. Una función siempre es precedida por un paréntesis. Dentro +de los paréntesis colocamos la información requerida para que la +función haga su trabajo. + +Un ejemplo de una función de R es `mean()`, para obtener rápidamente el +promedio de algún objeto. + +Podemos utilizarla para obtener el promedio de las notas de un curso que +tenemos guardadas en el objeto `notas`. +```{r ver_notas} +notas +``` + +Se utiliza de la siguiente forma: +```{r ejemplo_funcion} +mean(notas) +``` + +### Data frames +Una de las estructuras más comunes en R son los data frames o conjuntos de +datos. En palabras simples estos son tablas que contienen datos y están +formadas por filas y columnas. Para crear uno de estos objetos en R podemos +hacer lo siguiente: + +```{r} +df <- data.frame(x1 = c("A", "B", "C"), + x2 = c(1, 2, 3)) +``` + +Para poder acceder las columnas y las filas de estos objetos +se utiliza la siguiente lógica: `datos[fila, columa]`. Es decir, si +quiero obtener la segunda fila del conjunto anterior (y todas las +columnas) puedo utilizar: + +```{r} +df[2, ] +``` + +Para obtener la segunda columna y todas las filas: + +```{r} +df[, 2] +``` + +Y para obtener la segunda columna de la segunda fila solamente: + +```{r} +df[2, 2] +``` + +### Ayuda + +Para buscar ayuda o documentación sobre una función o paquete de R +se utiliza el signo de pregunta (?). Para la ayuda de una función +hacemos lo siguiente: + +```{r} +?class +``` + +Para buscar la ayuda de un paquete: + +```{r} +??dplyr +``` + +## Ejercicios + +### Utilice la función `max()` +La función `max` como es de esperar, nos devuelve el número máximo +del objeto que le indiquemos. Utilícela para obtener el máximo de +`y <- 10:100` + +```{r max, exercise = TRUE} + +``` + +```{r max-hint-1} +max() +``` + +```{r max-check} +grade_result( + pass_if(~ identical(unlist(.result), + unlist(max(y))), + "¡Buenísimo!") +) +``` + + +### Busque la ayuda o documentación de la función `mean()` + +```{r ayuda, exercise = TRUE} + +``` + +```{r ayuda-hint-1} +? +``` + +```{r ayuda-check} +grade_result( + pass_if(~ identical(unlist(.result), + unlist(?mean)), + "¡Buenísimo!") +) +``` + +### Acceda la segunda columna del conjunto de datos `mtautos` + +```{r seg_col, exercise = TRUE} + +``` + +```{r seg_col-hint-1} +[, 2] +``` + +```{r seg_col-check} +grade_result( + pass_if(~ identical(unlist(.result), + unlist(mtautos[, 2])), + "¡Buenísimo!") +) +``` + +### Llame la librería `learnr` + +```{r library, exercise = TRUE} + +``` + +```{r library-hint-1} +install.packages() +``` + +```{r library-check} +grade_result( + pass_if(~ identical(.result, library(learnr)), + "¡Buenísimo!") +) +``` + +### Instalar paquete + +```{r install, echo=FALSE} +question("¿Cómo se intala el paquete `dplyr`?", + answer("install_packages(dplyr)"), + answer("installPackages(dplyr)"), + answer("install.packages(\"dplyr\")", correct = TRUE) +) +``` + +### Encuentre la clase de objeto que es `y` + +```{r class, exercise = TRUE} + +``` + +```{r class-hint-1} +class() +``` + +```{r class-check} +grade_result( + pass_if(~ identical(.result, class(y)), + "¡Buenísimo!") +) +``` + +### Resolviendo errores + +Imaginemos que comienzo a hacer un análisis de datos exploratorio en R y lo +primero que quiero hacer es un gráfico con `ggplot`. Para esto escribo lo +siguiente: + +```{r codigo_ggplot, eval=FALSE} +ggplot(ventas, aes(x = tipo_producto, y = total_ganancias)) + + geom_boxplot() +``` + +Al hacerlo, obtengo el siguiente error: +```{r error, echo=FALSE, out.width="65%", fig.align = "center"} +knitr::include_graphics("https://storage.googleapis.com/datos_cursos/ixpantia_introR/error_libreria.png") +``` + +```{r error_ejercicio, echo=FALSE} +question("¿Porqué se da esta error?", + answer("Porque faltan argumentos en el código"), + answer("Porque no ha llamado la librería `ggplot2`", + correct = TRUE), + answer("Porque los datos `ventas` no fueron cargados"), + answer("Porque hay un error ortográfico en la instrucción") +) +```