class: center, middle .linea-superior[] .linea-inferior[] <img src="imagenes/logo_portada2.png" width="200" /> ## INE Educa: Clases abiertas de R ## Introducción a R ## Proyecto Ciencia de Datos --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Rbase y Tidyverse <img src="imagenes/rbase.jpeg" width="10%" style="display: block; margin: auto;" /> .centered[[*Rbase*](https://stat.ethz.ch/R-manual/R-devel/library/base/html/00Index.html) es el nombre que se le asigna a la lógica básica de R y sus principales funciones. Éste funciona con una lógica de anidación o de adentro hacia afuera] -- Sobre Rbase se han desarrollado una infinidad de paquetes, uno de los mas relevantes es [Tidyverse](https://www.tidyverse.org/) <img src="imagenes/hex-tidyverse.png" width="10%" style="display: block; margin: auto;" /> -- [Tidyverse](https://www.tidyverse.org/) ofrece una infinidad de funciones que simplifican el trabajo de programación y el aprendizaje, ya que la lógica de su código es de izquierda a derecha. Es por esto que las siguientes cápsulas solo se enfocan en [Tidyverse](https://www.tidyverse.org/) **Sin embargo, hay aspectos fundamentales de R que debemos conocer...** --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Operadores lógicos .panelset[ .panel[.panel-name[¿Cuáles son?] Los operadores lógicos son usados para describir relaciones lógicas, expresadas como verdadero (TRUE) o falso (FALSE). **>** Mayor que **>=** Mayor o igual que **<** Menor que **<=** Menor o igual que **==** Igual que **!=** Diferente Que **|** Este O este otro **&** Este Y este otro **%in%** En el siguiente vector.... o no !variable **%in%** **vector** ] .panel[.panel-name[Un ejemplo] Por ejemplo, con == *"le pregunto"* a R si el objeto *uno* tiene valor 1. Las respuestas posibles son TRUE o FALSE ```r # creo un objeto uno = 1 uno == 1 # TRUE es igual a 1 ``` ``` ## [1] TRUE ``` ```r uno == 2 # FALSE no es 2 ``` ``` ## [1] FALSE ``` ```r uno != 1 # FALSE es diferente de 1 ``` ``` ## [1] FALSE ``` ] ] --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Tipos de datos Texto o String ```r texto = "hola" texto ``` ``` ## [1] "hola" ``` Numérico ```r numero = 12 numero ``` ``` ## [1] 12 ``` Boolean ```r boolean = TRUE # o FALSE boolean ``` ``` ## [1] TRUE ``` --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Estructuras de datos básicas - Vectores .panelset[ .panel[.panel-name[Vectores] Pueden contener números, textos o booleanos. Un vector solo puede tener un tipo de dato ```r vector = c(1,FALSE,5,6) vector ``` ``` ## [1] 1 0 5 6 ``` ```r vector = c(1,"hola",FALSE,5,6) vector ``` ``` ## [1] "1" "hola" "FALSE" "5" "6" ``` Como podemos ver en el código anterior, si mezclamos un booleano con numéricos, el boleano pasará a ser un número (TRUE = 1, FALSE= 0). Si agregamos un texto, todo el resto del vector pasará a ser texto. ] .panel[.panel-name[Subset en vectores] ```r vector[2] ``` ``` ## [1] "hola" ``` ```r vector[2:5] ``` ``` ## [1] "hola" "FALSE" "5" "6" ``` ] ] --- background-image: url("imagenes/fondo2.PNG") background-size: contain; background-position: 100% 0% # Estructuras de datos básicas - Dataframes .panelset[ .panel[.panel-name[Dataframes] ```r datos = data.frame(nombre = c("Julia","Pedro", "Juan", "Diego"), nota1 = c(6.0,4.4,5.1,3.0), nota2 = c(4.9,2.8,6.9,4.4)) datos ``` ``` ## nombre nota1 nota2 ## 1 Julia 6.0 4.9 ## 2 Pedro 4.4 2.8 ## 3 Juan 5.1 6.9 ## 4 Diego 3.0 4.4 ``` ¿Cómo accedo a una variable? ```r datos$nombre ``` ``` ## [1] "Julia" "Pedro" "Juan" "Diego" ``` ] .panel[.panel-name[Subsets] Subset en dataframes, siempre cuidando el uso de la coma ```r datos[1,] # para filas ``` ``` ## nombre nota1 nota2 ## 1 Julia 6 4.9 ``` ```r datos[,1] # para columnas ``` ``` ## [1] "Julia" "Pedro" "Juan" "Diego" ``` o utilizando vectores ```r datos[,c(1,3)] ``` ``` ## nombre nota2 ## 1 Julia 4.9 ## 2 Pedro 2.8 ## 3 Juan 6.9 ## 4 Diego 4.4 ``` ```r datos[,c("nombre","nota2")] ``` ``` ## nombre nota2 ## 1 Julia 4.9 ## 2 Pedro 2.8 ## 3 Juan 6.9 ## 4 Diego 4.4 ``` ] .panel[.panel-name[Subset lógicos] Ahora con un vector de nuestro dataframe ```r datos$nombre == "Julia" ``` ``` ## [1] TRUE FALSE FALSE FALSE ``` Ahora, si me interesa ver solo las notas de Julia ```r datos[datos$nombre == "Julia",] ``` ``` ## nombre nota1 nota2 ## 1 Julia 6 4.9 ``` Se pueden utilizar todos los operadores lógicos ] ] --- class: center, middle .linea-superior[] .linea-inferior[] <img src="imagenes/logo_portada2.png" width="200" /> ## INE Educa: Clases abiertas de R ## Proyecto Ciencia de Datos ## Uniendo dataframes