class: center, middle, inverse, title-slide # R Base ## R + Ciencias Sociales --- <style type="text/css"> .remark-slide-content { font-size: 25px; padding: 1em 1em 1em 1em; } </style> # Hoja de ruta <br> ## ✔️ Valores ## ✔️ Vectores (Variables) ## ✔️ Funciones ## ✔️ Objetos ## ✔️ Data frames (bases de datos) --- class: inverse, center, middle # VALORES <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # Valores En R la unidad mínima para trabajar son los _valores_: #### - `1` es un valor (numérico), -- #### - `"uno"` es un valor (cáracter), -- #### - `"1"` es un valor (cáracter) y -- #### - `"Esto es un uno"` también es un valor (cáracter). --- # Valores R permite realizar un sinfin de operaciones con estos valores, por ejemplo, operaciones matemáticas como _sumar_, _restar_, _multiplicar_ o _dividir_: <iframe src="https://pablot.shinyapps.io/ejercicio_xaringan/?showcase=0" width="100%" height="400px"></iframe> --- class: inverse, center, middle # VECTORES <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # Vectores - A un conjunto de valores lo llamaremos __vector__ y R los interpretará bajo el comando `c()`. - Los vectores, como los valores, también serán de un tipo determinado: -- #### - Vector numérico (_numeric_) ```r c(1, 2, 3, 4, 5) ``` -- ```r c(1:5) ``` -- #### - Vector de texto (_character_) ```r c("uno", "dos", "tres", "cuatro", "cinco") ``` --- class: inverse, center, middle # FUNCIONES <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # Funciones #### - __La función__ es una operación que nos ayuda a resolver un problema que de otra forma llevaría más pasos/tiempo. #### - __Una función__ tiene _nombre_ y suele (intenta) ser intuitivo respecto a la acción que realiza (el problema que resuelve). También comienza y termina con paréntesis `()`, donde se ubica el o los argumentos. <img src="../img/funcion_desc.png" width="600" height="300" style="display: block; margin: auto;" /> --- # Funciones #### - Por ejemplo, la función `class()` evalúa el tipo (numérico, cáracter) de un elemento #### Evaluemos de qué tipo es el valor `2` ```r class(2) ``` ``` [1] "numeric" ``` <br> -- #### ¿y el valor `"dos"`? ```r class("dos") ``` ``` [1] "character" ``` --- # Funciones #### - Otras funciones nos permiten incluir más de un argumento. En este caso, cada uno de ellos se separa con una coma (`,`). #### Por ejemplo, la función `sum()` permite _sumar_ varios valores numéricos: ```r sum(2, 5, 10) ``` ``` [1] 17 ``` -- #### La función `paste0()` permite _pegar_ varios valores de tipo texto: ```r paste0("Esto", "es", "un texto", "con", "seis", "valores") ``` ``` [1] "Estoesun textoconseisvalores" ``` --- # Funciones #### - Ciertas funciones también incluyen _parámetros_, los cuales agregan _especificaciones_ que hacemos a la operación que realiza la función. -- Por ejemplo, queremos una función que pegue los valores anteriores pero que los separe por un espacio. En este caso, la función `paste()` (sin el `0` al final) contiene un parámetro llamado `sep = `, que permite definir un separador entre cada argumento. ```r paste("Esto", "es", "un texto", "con", "seis", "valores", sep = "_") ``` ``` [1] "Esto_es_un texto_con_seis_valores" ``` --- class: inverse, middle, center # PRÁCTICA <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse, middle # Práctica 1. Sumar dos o más valores sin utilizar una función 1. Crear un vector numérico que contenga 7 valores 1. Crear un vector de texto que contenga 3 valores 1. Verificar de qué tipo es el valor "67" (comprobar con comillas y sin comillas) 1. Pegar dos o más valores de tipo _character_ (texto), cada uno separado por un espacio en blanco
05
:
00
--- class: inverse, center, middle # OBJETOS <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # Objetos - En R el elemento más importante es el __objeto__. Tanto valores como vectores (y practicamente, cualquier elemento) pueden ser _asignados_ a un objeto. - Al objeto debemos definirlo por un nombre (elige tu propia aventura) y _asignarle_ el contenido: <img src="../img/objeto_nuevo.png" width="700" height="400" style="display: block; margin: auto;" /> --- #Objetos - Al igual que _valores_ y _vectores_, hay diferentes _tipos_ de objetos: -- #### - Objeto numérico (_numeric_) ```r edad <- c(24, 56, 75, 42, 99) ``` -- #### - Objeto de texto (_character_) ```r nombre <- c("D'rtanian", "Rigoberta", "Menganita", "Juancito", "Estanislao") ``` -- #### - (otro) objeto de texto (_character_) ```r nombre_y_apellido <- c("D'artanian estrujillo", "Rigoberta manchuria", "Menganita fulaique", "Juancito loquillo", "Estanislao leningrado") ``` --- # Objetos <img src="../img/objeto_ambiente.png" width="2796" style="display: block; margin: auto;" /> --- # Objetos #### - Para ver el contenido de un objeto, simplemente debemos escribir su nombre y ejecutar en el script o la consola ```r edad ``` ``` [1] 24 56 75 42 99 ``` ```r nombre_y_apellido ``` ``` [1] "D'artanian estrujillo" "Rigoberta manchuria" "Menganita fulaique" [4] "Juancito loquillo" "Estanislao leningrado" ``` --- # Nombrando objetos .panelset[ .panel[.panel-name[Reglas] 🚫 No se aceptan espacios Objeto llamado ~~`nombre y apellido`~~ 🚫 No se puede empezar con un número Objeto llamado ~~`1_objeto`~~ ] .panel[.panel-name[Sugerencias] 👎🏼 Evitar símbolos (&, ^, /, !) y acentos Objeto llamado `países` 👎🏼 Evitar que objetos y funciones tengan el mismo nombre ] .panel[.panel-name[Convenciones] 👍🏼 todoenminuscula 👍🏼 TODOENMAYUSCULA 👍🏼 espacio.con.punto 🤘🏼 espacio_con_guion_bajo ] ] --- class: inverse, middle, center # DATA FRAMES (bases de datos) <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # Data frames El elemento `data.frame` es lo que conocemos como una _base de datos_: Filas (casos) y columnas (variables) relacionadas entre sí: <img src="../img/data_frames.png" width="700" height="400" style="display: block; margin: auto;" /> --- # Data frames - La función `data.frame()` nos permite crear una base de datos vinculando vectores: ```r data.frame(nombre_y_apellido, edad) ``` ``` nombre_y_apellido edad 1 D'artanian estrujillo 24 2 Rigoberta manchuria 56 3 Menganita fulaique 75 4 Juancito loquillo 42 5 Estanislao leningrado 99 ``` -- - Podemos guardarlo en un objeto: ```r base_personas <- data.frame(nombre_y_apellido, edad) ``` --- # Data frames - #### Algunas funciones para trabajar con los data frames: ```r *dim(base_personas) ``` ``` [1] 5 2 ``` ```r *summary(base_personas) ``` ``` nombre_y_apellido edad Length:5 Min. :24.0 Class :character 1st Qu.:42.0 Mode :character Median :56.0 Mean :59.2 3rd Qu.:75.0 Max. :99.0 ``` --- # Navengando por objetos: vectores #### R base nos permite _navegar_ entre los valores de un vector o data frame, y lo hace a través de `[]` -- #### - Supongamos que queremos extraer el 2do valor del objeto edad: ```r edad <- c(24, 56, 75, 42, 99) edad[2] ``` ``` [1] 56 ``` -- #### - Podemos guardar en un objeto dicho valor ```r valor_2do <- edad[2] valor_2do ``` ``` [1] 56 ``` --- # Navengando por objetos: vectores #### Así como podemos consultarle a R por un valor en particular de un vector, también podemos usar el comando `[]` para _editar_ ese valor: ```r edad[2] ``` ``` [1] 56 ``` -- ```r edad[2] <- 76 ``` -- #### Chequeo el contenido de mi objeto `edad` ```r edad ``` ``` [1] 24 76 75 42 99 ``` --- # Navengando por objetos: base de datos #### Supongamos que tenemos la siguiente base de datos: ```r edad <- c(24, 56, 75, 42, 99) nombre_y_apellido <- c("D'artanian estrujillo", "Rigoberta manchuria", "Menganita fulaique", "Juancito loquillo", "Estanislao leningrado") base_personas <- data.frame(nombre_y_apellido, edad) base_personas ``` ``` nombre_y_apellido edad 1 D'artanian estrujillo 24 2 Rigoberta manchuria 56 3 Menganita fulaique 75 4 Juancito loquillo 42 5 Estanislao leningrado 99 ``` --- # Navengando por objetos: base de datos #### Queremos extraer la **edad** de _Menganita fulaique_: ```r base_personas[3,2] ``` ``` [1] 75 ``` -- <img src="../img/base_coord_1.png" width="400" height="350" style="display: block; margin: auto;" /> --- # Navengando por objetos: base de datos #### También podemos consultarle a R por los valores de una columna entera de nuestra base con el símbolo `$`: -- ```r base_personas$nombre_y_apellido ``` ``` [1] "D'artanian estrujillo" "Rigoberta manchuria" "Menganita fulaique" [4] "Juancito loquillo" "Estanislao leningrado" ``` -- ```r base_personas$edad ``` ``` [1] 24 56 75 42 99 ``` --- # Navengando por objetos: base de datos #### Y aplicar una función sobre esa columna ```r mean(base_personas$edad) ``` ``` [1] 59.2 ``` -- #### ```r summary(base_personas$edad) ``` ``` Min. 1st Qu. Median Mean 3rd Qu. Max. 24.0 42.0 56.0 59.2 75.0 99.0 ``` --- class: inverse, middle, center # PRÁCTICA <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse 1. Crear un vector llamado _nombre_ que contenga 6 valores (6 nombres) 1. Extraer el segundo valor del vector creado y asignarlo a un nuevo objeto *** - Dados los siguientes vectores: ```r localidad <- c("Jujuy", "Jujuy", "La Pampa", "Córdoba", "Jujuy", "Chubut") tipo_alojamiento <- c("Casa", "Casa", "Depto", "Depto", "Depto", "Casa") ``` 1. Crear un objeto de tipo data.frame (base de datos) que contenga el vector creado (_nombre_) más los dos propuestos (_localidad_ y _tipo_alojamiento_) 1. Extraer del data.frame el valor de la tercar fila y segunda columna. 1. Consultar del data.frame sobre los valores de la columna _tipo_alojamiento_
05
:
00