class: center, middle, titular background-size: contain <img src="img/see.png" width="250px"/> # Sección 2: Generalidades ## **PROGRAMA INTERNACIONAL DE ESTADÍSTICA APLICADA A LA INVESTIGACIÓN CIENTÍFICA** #### MÓDULO: SOFTWARES PARA EL MANEJO DE DATOS <br> <br> Linda Cabrera Orellana #### Marzo, 2023 --- class: middle, center, inverse
# Generalidades --- #
Operadores aritméticos .pull-left[ Lo más simple que podrías hacer con R es aritmética: ```r 100 + 5 ## [1] 105 ``` R mostrará la respuesta, precedido de un `[1]`. Si escribes un comando incompleto, R esperará a que lo completes. Cada vez que presionas `Enter` y R te muestra un `+` en lugar de `>`, significa que está esperando que completes el comando. Si deseas cancelar un comando, simplemente presiona `Esc` y RStudio te devolverá el `>` **prompt**. ] .pull-right[ Cuando usas R como calculadora, el orden de las operaciones es el mismo que ha aprendido en la escuela. De mayor a menor precedencia: - Paréntesis: `(`, `)` - Exponente: `^` o `**` - División: `/` - Multiplicación: `*` - Suma: `+` - Resta: `-` ] --- #
Operadores aritméticos .pull-left[ ```r 3 + 20 * 2 ## [1] 43 ``` Usa paréntesis para agrupar las operaciones a fin de forzar el orden de la evaluación o para aclarar lo que se desea hacer. ```r (3 + 20) * 2 ## [1] 46 ``` Esto puede ser difícil de manejar cuando no es necesario, pero aclara tus intenciones. ```r (3 + (20 * (2 ^ 2))) # difícil de leer 3 + 20 * 2 ^ 2 # claro, si recuerdas las reglas 3 + 20 * (2 ^ 2) # si olvidas algunas reglas, esto podría ayudar ``` ] .pull-right[ Los números pequeños o grandes tienen una notación científica: ```r 3/10000 ## [1] 3e-04 ``` Es la abreviatura de "multiplicado por `10 ^ XX`". Entonces `2e-4` es la abreviatura de `2 * 10^(-4)`. Tú también puedes escribir números en notación científica: ```r 5e3 ## [1] 5000 5e-3 ## [1] 0.005 ``` ] --- #
Operadores relacionales .pull-left[ Son usados para hacer comparaciones y siempre devuelven como resultado `TRUE` o `FALSE`. | Operador | Comparación | |:--------:|:-----------------:| | `\(<\)` | Menor que | | `\(\leq\)` | Menor o igual que | | `\(>\)` | Mayor que | | `\(\geq\)` | Mayor o igual que | | `\(==\)` | Exactamente igual que | | `\(\neq\)` | No es igual que | | %in% | Incluye | ```r 10 >= 4 ## [1] TRUE ``` ] .pull-right[ ```r 10 == 4 ## [1] FALSE ``` Una advertencia sobre la comparación de números: nunca debes usar `==` para comparar dos números a menos que sean enteros. Las computadoras sólo pueden representar números decimales con un cierto grado de precisión, así que dos números que parecen iguales cuando se muestran por R, pueden tener diferentes representaciones subyacentes y por lo tanto ser diferentes por un pequeño margen de error (llamado tolerancia numérica de la máquina). En su lugar, debes usar la función `all.equal`. Lectura adicional: [http://floating-point-gui.de/](http://floating-point-gui.de/) ] --- background-image: url(https://media.tenor.com/sb3m65uL0YsAAAAC/the-last-of-us-joel.gif) background-size: contain --- #
Operadores lógicos .pull-left[ Son usados para operaciones de **álgebra Booleana**, es decir, para describir relaciones lógicas, expresadas como `TRUE` o `FALSO`. Supongamos que `\(x\)` y `\(y\)` son **proposiciones**, es decir, enunciados lógicos que se les puede asignar un valor de verdad (1) o falsedad (0), entonces: | Operador | Nombre | Resultado | |:--------:|:-----------:|:----------------------:| | `\(x\)` | `\(y\)` | disyunción (O) | Es `TRUE` cuando al menos una de las dos `\(x\)` o `\(y\)` es verdadera, y `FALSE` en caso contrario. | | `\(x\)` & `\(y\)` | conjunción (Y) | Es `TRUE` cuando `\(x\)` y `\(y\)` son verdaderas, y `FALSE` en cualquier otro caso. | | ! `\(x\)` | negación (NO) | Es `TRUE` si `\(x\)` es `FALSE` y es `FALSE` si `\(x\)` es `TRUE`. | ] -- .pull-right[ **Ejercicio 2.1.** Considerando el valor lógico de las proposiciones `\(a\)`, `\(b\)` y `\(c\)`: - `\(a\)` = Ellie es inmune - `\(b\)` = Las Luciérnagas son un grupo pacífico - `\(c\)` = El Cordyceps es un hongo Indique si los siguientes enunciados son falsos o verdaderos: 1. `\(a\)` & `\(c\)` 2. `\(a\)` & `\(b\)` & `\(c\)` 3. `\(a\)` | `\(b\)` | `\(c\)` 4. ! `\(b\)` 5. ( `\(a\)` | `\(b\)` ) & ( `\(c\)` | `\(b\)` ) ] --- #
Variables y Asignaciones .pull-left[ Una asignación evalúa la expresión y guarda el resultado en una variable pero no lo imprime. Puedes crear objetos nuevos usando `<-` con el atajo de teclado `Alt+-`. ```r x <- 20*3 ``` La asignación no muestra el valor, pero lo almacena para más adelante en algo llamado **variable**. `x` ahora contiene el valor 60: ```r x ## [1] 60 ``` ] .pull-right[ En el Panel de Entorno del espacio de trabajo en la pestaña `Environment` se puede observar que `x` y su valor han aparecido. La variable `x` se puede usar en lugar de un número en cualquier cálculo que espere un número: ```r sqrt(x) ## [1] 7.745967 ``` Ten cuidado, porque las variables pueden reasignarse: ```r x <- 120 ``` `x` tenía el valor 60 y ahora tiene el valor 120. ] --- #
Variables y Asignaciones .pull-left[ También, los valores de asignación pueden contener la variable asignada: ```r x <- x + 2 y <- x / 2 ``` Los _nombres de las variables_ pueden contener letras, números, guiones bajos y puntos. No pueden comenzar con un número ni contener espacios en absoluto. Es aconsejable que los nombres sean descriptivos. Diferentes personas usan diferentes convenciones para nombres largos de variables, estos incluyen - puntos.entre.palabras - guiones_bajos_entre_palabras - MayúsculasMinúsculasParaSepararPalabras ] .pull-right[ También es posible utilizar el operador `=` para la asignación: ```r x = 20*3 ``` Esta forma es menos común entre los usuarios R. **Ejercicio 2.2.** De los siguientes ejemplos, ¿Cuáles son nombres de variables válidas en R? ```r min_height max.height _age .mass MaxLength min-length 2widths celsius2kelvin ``` ] --- #
Funciones .pull-left[ R tiene una gran colección de funciones integradas que se usan así: <img src="img/funcion2.png" width="100%" style="display: block; margin: auto;" /> Por ejemplo, para hacer secuencias de números podemos utilizar la función `seq()` del paquete base `{base}`. ] .pull-right[ ```r # generar secuencias de números del 1 al 10 seq(from=1, to=10) ## [1] 1 2 3 4 5 6 7 8 9 10 # generar secuencias de números del 1 al 10 # saltando 2 números seq(from=1, to=10, by=2) ## [1] 1 3 5 7 9 # argumentos sin etiquetas seq(1, 10, 2) ## [1] 1 3 5 7 9 # secuencia de 3 números del 1 al 10 # lo divide en partes iguales seq(from=1, to=10, length.out=3) ## [1] 1.0 5.5 10.0 ``` ] --- #
Funciones ```r sqrt(81) # raíz cuadrada ## [1] 9 log(100, 10) # logaritmo base 10 de 100, también log10(100) ## [1] 2 exp(10) # euler elevado a la 10 ## [1] 22026.47 sin(pi/2) # seno de pi medio ## [1] 1 abs(-3.6) # valor absoluto ## [1] 3.6 round(7.12) # redondear ## [1] 7 ``` --- class: middle, center, inverse
# Obteniendo ayuda --- .pull-left[ #
Desde la consola * `help.start()` proporciona enlaces de ayuda general. * `help.search()` busca en el sistema de ayuda la documentación que coincida con un carácter dado debe introducir cadena de texto. * `help()` proporciona detalles para una función específica instalada en tu pc * `RSiteSearch()` busca la frase clave en manuales de ayuda y listas de correo archivadas en el sitio web de [R Project](http://search.r-project.org/) ```r RSiteSearch("string") ``` ] -- .pull-right[ #
Desde la web *
[oogle](https://www.google.com/) *
StackOverflow en [http://stackoverflow.com/](http://stackoverfl ow.com/questions/tagged/r) *
Cross Validated en [http://stats.stackexchange.com/](http://stats.stackexchange.com/questions/tagged/r) * R-seek en [http://rseek.org/](http://rseek.org/) * R-bloggers en [http://www.r-bloggers.com/](http://www.r-bloggers.com/) ] --- background-color: var(--azul-claro) class: middle, center, inverse
## PRÁCTICA --- #
Práctica: ¡5 minutos! 1. ¿Cuál será el valor final de las variables `masa` y `edad`? ```r masa <- 47.5 edad <- 122 masa <- masa * 2.3 edad <- edad - 20 ``` 2. Compara la variable `masa` con `edad`. ¿Es la variable `masa` más grande que `edad`? 3. Limpia tu entorno de trabajo borrando las variables de `masa` y `edad`. --- class: middle, center, inverse
# Proceso del _tidyverse_ --- #
Proceso del *tidyverse* <img src="img/tidyverse.png" width="100%" style="display: block; margin: auto;" /> --- class: middle, center, inverse <br> <br> # Generalidades ### Linda Cabrera Orellana .pull-left[ .center[ ### [@socecuest
](https://www.facebook.com/socecuest) ### [@see_estadistica
](https://www.instagram.com/see_estadistica/) ]] .pull-right[ .center[ ### [@see_estadistica
](https://twitter.com/see_estadistica) ### [@sosecuest
](https://t.me/sosecuest) ]]