<- c(1,2,3,4,5,6,7,8,9) Vector_Numerico
6 Laboratorio de R
4
- Autor: Edsaúl Emilio Pérez Guerrero
- Afiliación: Universidad de Guadalajara
- mail: edsaul.perezg@academicos.udg.mx
- Última actualización: 2024-09-11
En este laboratorio de R
se abordará el manejo de estructuras de datos. En R
podemos encontrar distintas estructuras de datos, es decir enR
se pueden encontrar datos ordenados de distintas formas. Además, muchas veces es de nuestro interés acceder a datos en especifico, manipular las estructuras o crear subsets con características peculiares.
De acuerdo con su grado de complejidad las estructuras de datos en R
son:
6.1 Vectores
Tienen una dimensión y solo tienen un tipo de dato, por ejemplo solamente datos numéricos.
El siguiente código crea un vector numérico.
Si prestamos atención el vector anterior solo tiene una dimensión y solo tiene valores numéricos.
Vector_Numerico
[1] 1 2 3 4 5 6 7 8 9
Otro ejemplo se muestra en el siguiente código es un vector con caracteres (cadenas).
<- c("Curso", "Proinnova", "tarea") Vector_Cadena
Si llamamos al objeto obtenemos lo siguiente:
Vector_Cadena
[1] "Curso" "Proinnova" "tarea"
Se pueden combinar los dos vectores anteriores pero R
realizará una coerción de los datos. Puede ver más sobre la coerción de datos en el apartado [Coerción de datos] y en el siguiente en el siguiente blog
<- c(Vector_Numerico, Vector_Cadena) Vector
Si comprobamos el tipo de dato que contiene el Vector
veremos que lo transformó a cadena.
class(Vector)
[1] "character"
6.2 Matrices
Son estructuras de dos dimensiones que contienen solo un tipo de dato (numérico, cadena, etc.). Las dimensiones en una matriz se caracterizan por tener un largo (dimensión 1) y un alto (dimensión 2). Las matrices son, por lo tanto, una estructura con forma rectangular, con renglones y columnas en las que solamente hay un tipo de dato.
6.3 Data Frame
Los Data Frames o marco de datos, es una estructura muy parecida a las matrices, sin embargo, a diferencia de las matrices pueden contener varios de tipos de datos en dos dimensiones. Un Data Frame es una estructura de datos que organiza los datos en una tabla bidimensional de filas y columnas, como una hoja de cálculo o una base de datos. La base de datos birwht
es un Data Frame Tabla 6.1.
function (x, df1, df2, ncp, log = FALSE) |
{ |
if (missing(ncp)) |
.Call(C_df, x, df1, df2, log) |
else .Call(C_dnf, x, df1, df2, ncp, log) |
} |
Los Data Frame son una de las estructuras de datos más comunes utilizadas en el análisis de datos, ciencias de datos, bioestadística. Es la forma más intuitiva de almacenar y trabajar con datos. Es muy fácil, almacenar los datos en una hoja de cálculo. En un Data Frame los renglones tienen los casos, mientras que las columnas tienen las variables. Por ejemplo en la base de datos birtwht
(ver tabla Tabla 6.1), en los renglones o filas se encuentran cada una de las pacientes y en las columnas cada una de las variables (por ejemplo, glu
, BMI
).
6.4 Subconjuntos de datos
En este apartado se describirá como acceder a datos que tienen características específicas dentro de un data frame. Para ello, vamos a trabajar con la base de datos Vacunacion
que se describe a continuación:
6.4.1 Data frame Vacunacion
El data frame Vacunacion
es un archivo con extensión .xlxs que contiene los datos acumulados de vacunación hasta el 31 de diciembre de 2021 por países y regiones para el COVID-19. Los datos fueron extraídos del repositorio Our World in Data en GitHub para covid-19. El data frame cuenta con las siguiente variables:
- location: Que indica la región de la que fueron obtenidos los datos
- date: Fecha
- vaccine: Inidca el tipo de vacuna
- total_vaccinations: Indica el total acumulado para cada vacuna en específico.
Utilice en el menú de Rstudio (ver apartado [Exportar base de datos desde el menu de Rstudio]) para importar la base de datos. Recuerde que se trata de un archivo con extensión .xlxs. Puede descargar el Data Frame en el siguiente en este enlace
Por favor nombre su base de datos como “Vacunacion”. Recuerde que este será nuestro mega objeto al que necesitamos acceder. Puede utilizar la función View
para visualizar su Data Frame
location | date | vaccine | total_vaccinations |
---|---|---|---|
Argentina | 2021-12-31 | CanSino | 204112 |
Argentina | 2021-12-31 | Moderna | 3539575 |
Argentina | 2021-12-31 | Oxford/AstraZeneca | 24446207 |
Argentina | 2021-12-31 | Pfizer/BioNTech | 6122911 |
Argentina | 2021-12-31 | Sinopharm/Beijing | 25539384 |
Argentina | 2021-12-31 | Sputnik V | 18238358 |
Austria | 2021-12-31 | Johnson&Johnson | 360436 |
Austria | 2021-12-31 | Moderna | 1483121 |
Austria | 2021-12-31 | Novavax | 0 |
Austria | 2021-12-31 | Oxford/AstraZeneca | 1588102 |
Austria | 2021-12-31 | Pfizer/BioNTech | 13129584 |
Belgium | 2021-12-31 | Johnson&Johnson | 423883 |
6.4.2 ¿Cómo acceder a un subconjunto de datos?
Para acceder a los subconjuntos de datos o algún dato en específico podemos hacerlo utilizando los símbolos []
y el símbolo $
.
6.4.2.1 Subconjuntos de datos con []
A continuación se explican algunos ejemplos utilizando corchetes.
Supongamos que deseamos conocer cual es el dato que se ubica en la fila de 7 y en la columna 4. Para ello, podemos utilizar el siguiente código que devolverá precisamente este dato:
7,4] Vacunacion[
# A tibble: 1 × 1
total_vaccinations
<dbl>
1 360436
Este dato corresponde a la cantidad de individuos vacunados con la vacuna Johnson&Johnson en Austria. Note como el primer número indica la fila y el segundo la columna.
Ahora suponga que desea conocer cuantas veces aparece cada uno de los países y regiones. Para ello, nos vamos a poyar de la función table
utilizando el siguiente código
table(Vacunacion[,1])
location
Argentina Austria Belgium Bulgaria Chile
6 5 5 4 4
Croatia Cyprus Czechia Denmark Ecuador
4 4 3 4 4
Estonia European Union Finland France Germany
4 9 4 4 5
Hong Kong Hungary Ireland Italy Latvia
2 6 3 3 3
Liechtenstein Lithuania Luxembourg Malta Netherlands
3 4 4 4 5
Norway Peru Poland Portugal Romania
4 3 5 6 4
Slovakia Slovenia South Korea Spain Sweden
3 4 5 4 4
Switzerland Ukraine Uruguay
3 5 3
Note como dejamos el número de las filas vacío y pusimos el número 1 en las columnas. Este código indica que queremos los conteos de la primer columna tomando en cuenta todas la filas. Si por ejemplo, quisiéramos los conteos de las primeras 50 filas, el código sería el siguiente:
table(Vacunacion[1:50, 1])
location
Argentina Austria Belgium Bulgaria Chile Croatia Cyprus Czechia
6 5 5 4 4 4 4 3
Denmark Ecuador Estonia Finland
4 4 4 3
Si no conoce el número de la fila o la columna puede utilizar su nombre, siempre y cuando se encuentre entrecomillado
table(Vacunacion[1:50, "location"])
location
Argentina Austria Belgium Bulgaria Chile Croatia Cyprus Czechia
6 5 5 4 4 4 4 3
Denmark Ecuador Estonia Finland
4 4 4 3
6.4.2.2 Subconjuntos de datos con $
Otra forma de acceder a los subconjuntos de datos es utilizando el símbolo de $
. Por ejemplo, supongamos que deseamos conocer cuantas veces aparece cada uno de los países y regiones utilizando la función table
. Para ello empleamos el siguiente código:
table(Vacunacion$location)
Argentina Austria Belgium Bulgaria Chile
6 5 5 4 4
Croatia Cyprus Czechia Denmark Ecuador
4 4 3 4 4
Estonia European Union Finland France Germany
4 9 4 4 5
Hong Kong Hungary Ireland Italy Latvia
2 6 3 3 3
Liechtenstein Lithuania Luxembourg Malta Netherlands
3 4 4 4 5
Norway Peru Poland Portugal Romania
4 3 5 6 4
Slovakia Slovenia South Korea Spain Sweden
3 4 5 4 4
Switzerland Ukraine Uruguay
3 5 3
Note como el símbolo $
nos ayuda acceder a los objetos contenidos en nuestro mega objeto (data frame). Hasta cierto punto esto nos puede ayudar a sustituir la función attach
.
Se pueden combinar el uso de []
, $
y el uso de operadores relacionales, para acceder a datos en específico. Por ejemplo, suponga que deseamos filtrar la cantidad de individuos vacunados de Bélgica. Para ello empleamos el siguiente código:
$total_vaccinations[Vacunacion$location=="Belgium"] Vacunacion
[1] 423883 2346032 0 2846647 16078523
La explicación del código es la siguiente: Primero accedimos a la columna de total de vacunación. Posteriormente, dado que es de nuestro interés seleccionar solamente los datos de Bélgica, filtramos utilizando los []
para acceder a la columna location
que a su vez filtramos utilizando los operadores lógicos para seleccionar los datos únicamente de aquello que en la columna location
es exactamente igual a Belgium
. Note como se utilizaron comillas y un signo de doble igual.
6.5 Ejercicios R
lab 04
Utilizando la base de datos de vacunación responda los siguientes ejercicios:
Ejercicio 6.1 Identifique cual es el dato que se encuentra en la fila 50 y columna 3
Ejercicio 6.2 Identifique cual es el dato que se encuentra en la fila 98 y columna 2
Ejercicio 6.3 Si quisiéramos acceder a toda la columna 3 ¿Cuál sería el código que debería utilizarse? ¿Hay solo una opción?
Ejercicio 6.4 Suponga que solamente le interesan los datos contenidos en las filas 4 a la 10. ¿Qué código necesita para ello?
Ejercicio 6.5 Acceda al total de individuos vacunados solamente a los datos de vacunación para Slovakia.
Ejercicio 6.6 Calcule el total de individuos vacunados en Slovakia. Puede utilizar la función sum
o realizar la suma manualmente.
Ejercicio 6.7 Acceda al total de los individuos vacunados en Lithuania y Germany.
Ejercicio 6.8 Cree un nuevo objeto con que contenga todas las columnas del data frame vacunación
pero que solo contenga las filas de Lithuania. Llame a este objeto como Lithuania