Capítulo 3 Lenguaje
En este capítulo abordaremos los tipos de datos que se usan en una data frame, como también la estructura de control que nos permiten controlar el flujo de ejecución de una secuencia de comandos y la estructura de datos de la data frame.
3.1 Tipos de datos
Los tipos de datos simples o fundamentales en R son los siguientes:
| TIPO | EJEMPLO | NOMBRE EN INGLÉS | CÓDIGO |
|---|---|---|---|
| enteros | 1 | integer | is.integer() |
| numericos | 1.3 | numeric | is.numeric() |
| cadena de texto | “uno” | character | is.character() |
| factor | uno | factor | is.factor() |
| lógico | true | logical | is.logical() |
| perdido | NA | NA | is.na() |
| vacío | NULL | NULL | is.null() |
| complex | 1+2i | complex | is.complex() |
3.2 Estructura de control
Las estructuras de control nos permiten controlar el flujo de ejecución de una secuencia de comandos. De este modo, podemos poner “lógica” en el código de R y lograr así reutilizar fragmentos del código una y otra vez. A continuación, veremos la sentencia de control.
3.2.1 Sentencias de Control - If / Else
Esta sentencia nos permite decidir si ejecutar o no un fragmento de código en función de una condición.
Otra forma de realizar lo anterior es de la siguiente manera.
## [1] TRUE
3.2.2 Control de Flujo
La función while() ejecuta un bucle o ciclo mientras sea verdadera una condición.
## [1] 6
## [1] 7
## [1] 8
## [1] 9
El comando for() toman una variable a la que se le asignan los elementos de un objeto (en general, vectores o listas) en forma sucesiva a medida que se van recorriendo los ciclos.
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
El comando switch() permite ejecutar un bloque de código distinto en función del valor de una variable.
## [1] 5.5
3.3 Estructura de datos
3.3.1 Variables
El siguiente código asigna (= o <-) el valor 12 a las variables valor.
3.3.2 Vectores
Los vectores pueden representar las columnas de una tabla de datos. un ejemplo podría ser la lista del curso con las notas.
Figura 3.1: Ejemplo de vectores.
Si queremos crear vectores en R, utilizamos la función c(). En este caso, la c es de «combinar» (combinar uno o más valores o elementos). Lo más común, es que los vectores sean de tipo numérico, carácter o lógico.
#vector 1
Nombre <- c("Carlos", "Camila", "Erick")
#vector 2
Apellido <- c("Acosta", "Madrid", "Ortega")
#vector 3
Prueba_1 <- c(40, 55, 65)
#vector 4
Prueba_2 <- c(60, 40, 60)3.3.2.1 Operar vectores
Podemos operar vectores contra valores numéricos o con otros vectores. En la siguiente tabla se mostrarán las operaciones básicas que se pueden hacer con vectores.
| Operaciones | Sintaxis |
|---|---|
| Adición | + |
| Sustracción | - |
| Dividir | / |
| Producto Escalar | %*% |
| Producto de Elementos | * |
| Suma de Elementos | sum() |
Por ejemplo, se asigna dos décimas a la prueba 1 para cada estudiante.
## [1] 42 57 67
Se resta 5 décimas a las pruebas 2 para cada estudiante.
## [1] 55 35 55
Se quiere saber cuánto suman las dos notas por estudiante.
## [1] 100 95 125
Como se observa se sumaron las primeras notas y para obtener las notas modificadas se realiza lo siguiente.
# se cambia las notas en los vectores con la nueva asignación
Prueba_1 <- Prueba_1 + 2
Prueba_2 <- Prueba_2 - 5## [1] 97 92 122
Queremos saber la suma de las notas de la prueba 1.
## [1] 166
Ahora queremos saber el promedio entre las dos pruebas por cada estudiante.
3.3.2.2 Operaciones estadísticas
| Operaciones | Sintaxis |
|---|---|
| Media | mean() |
| Mediana | median() |
| Máximo | max() |
| Mínimo | min() |
| Cuantiles | quantile() |
| Producto | prod() |
| Suma Acumulada | cumsum() |
| Producto Acumulado | cumprod() |
| Diferencias | diff() |
| Coeficiente de Correlación | cor() |
Ahora si queremos calcular la media aritmética o promedio de la prueba 1, se tendrá que utilizar el comando mean().
## [1] 55.33333
Queremos ver la nota mínima y máxima de la prueba 2.
## [1] 35
## [1] 55
Si queremos realizar una suma acumulada de la prueba 1, se utiliza el comando cumsum(), lo que hace es sumar los dos primeros elemento; este resultado lo suma al tercer elemento y así sucesivamente.
## [1] 42 99 166
3.3.2.3 Orden de los vectores
Si queremos ordenar los vectores de formas creciente usaremos la función sort().
## [1] 42 57 67
La función rev() coloca las componentes de un vector en orden inverso a como han sido introducidas.
## [1] 67 57 42
También se puede realizar de la siguiente forma agregamos la decreasing= TRUE para hacerlo decreciente.
## [1] 67 57 42
Si queremos invertir el orden del vector prueba 1.
## [1] 67 57 42
Ahora si queremos saber el tipo de clase que es el vector
## [1] "numeric"
## [1] "character"
Un vector tiene el mismo tipo que los datos que contiene.
## [1] FALSE FALSE FALSE
## [1] TRUE TRUE TRUE
## [1] TRUE FALSE FALSE
3.3.3 Matrices
Una matriz R no es más que un vector que cuenta con un atributo llamado dim indicando el número de filas y columnas de la matriz. Se trata, por tanto, de una estructura de datos en la que todos los elementos han de ser del mismo tipo. Podemos crear una matriz a partir de un vector, así como indicando el número de filas y columnas dejando todos sus elementos vacíos.
Ahora crearemos una matriz que contenga números del 4 al 55 que tenga 8 columnas y 7 filas
## Warning in matrix(4:55, ncol = 8): data length [52] is not a sub-multiple or
## multiple of the number of rows [7]
## Warning in matrix(4:55, nrow = 7): data length [52] is not a sub-multiple or
## multiple of the number of rows [7]
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
## [1,] 4 11 18 25 32 39 46 53
## [2,] 5 12 19 26 33 40 47 54
## [3,] 6 13 20 27 34 41 48 55
## [4,] 7 14 21 28 35 42 49 4
## [5,] 8 15 22 29 36 43 50 5
## [6,] 9 16 23 30 37 44 51 6
## [7,] 10 17 24 31 38 45 52 7
la función length() devuelve el número de elementos de una matriz.
## [1] 56
Para conocer el número de filas y columnas podemos usar las función nrow(),ncol() y dim().
## [1] 7
## [1] 7 8
si queremos nombrar las columnas y filas de la matriz usamos la funciones colnames() y rownomes() respectivamemente.
colnames(Matriz) <- c('Semana1','Semana2','Semana3', 'Semana4','Semana5', 'Semana6', 'Semana7', 'Semana8')
Matriz## Semana1 Semana2 Semana3 Semana4 Semana5 Semana6 Semana7 Semana8
## [1,] 4 11 18 25 32 39 46 53
## [2,] 5 12 19 26 33 40 47 54
## [3,] 6 13 20 27 34 41 48 55
## [4,] 7 14 21 28 35 42 49 4
## [5,] 8 15 22 29 36 43 50 5
## [6,] 9 16 23 30 37 44 51 6
## [7,] 10 17 24 31 38 45 52 7
3.3.4 Data frames
El data frame es seguramente el tipo de dato más utilizado en R, el data frame está compuesto de múltiples columnas y filas, como una matriz, pero cada columna puede ser un tipo distinto. Pero antes de adentrarnos a data frame es importante saber cuál es la diferencia con un data set.
Un data set (conjunto de datos) es cualquier dato que recopile para su análisis. Esto podría obtenerse de un archivo de Excel, una base de datos, un lago de datos o cualquier otro medio para almacenar datos. Un conjunto de datos se puede cargar en un data frame (marco de datos) que es una estructura de tabla construida específicamente para el análisis.
Un data frame usa RAM en lugar de discos duros, lo que significa que usa un almacenamiento temporal rápido que desaparecerá una vez que se apague la computadora.
Ahora con las anteriores variables llamadas notas de los alumnos crearemos un data frame con la función data.frame (). Es importante destacar que un data frame está compuesto por vectores.
## Nombre Apellido Prueba_1 Prueba_2
## 1 Carlos Acosta 42 55
## 2 Camila Madrid 57 35
## 3 Erick Ortega 67 55
Veremos el número de observaciones con la función nrow().
## [1] 3
Nombres de las columnas con la función names().
## [1] "Nombre" "Apellido" "Prueba_1" "Prueba_2"
El tipo de caracter que poseen las columnas.
## 'data.frame': 3 obs. of 4 variables:
## $ Nombre : Factor w/ 3 levels "Camila","Carlos",..: 2 1 3
## $ Apellido: Factor w/ 3 levels "Acosta","Madrid",..: 1 2 3
## $ Prueba_1: num 42 57 67
## $ Prueba_2: num 55 35 55
Aquí podemos observar diferentes informaciones que posee el data frame list_alum, lo primero que observamos es la cantidad de observaciones las cuales posee 3, también la cantidad de variables las cuales son 4, los nombres de cada variables o columnas con sus respectivo tipo de data que posee. En este caso tenemos dos variables numéricas y dos variables de carácter.
3.3.4.1 Detach
La notación $ para el acceso a elementos de un data.frame
## [1] 55.33333
3.3.4.2 Operaciones estadísticas Data frame
Si queremos saber la nota máxima de la prueba_2 .
## [1] 55
Si queremos saber la nota mínima de la prueba_2 .
## [1] 35