Utilice verbos dplyr
básicos para filtrar filas, seleccionar columnas y ordenar/organizar conjuntos de datos en combinación con el operador pipe %>%
.
dplyr facilita el proceso de transformación de datos al proporcionar un marco enriquecido para manipular marcos de datos. Las funciones de dplyr se pueden concatenar a potentes canalizaciones de transformación para seleccionar, filtrar, ordenar, unir y agregar datos.
Existe la broma de que el 80 % de la ciencia de datos está limpiando los datos y el 20 % se queja de limpiar los datos. — Anthony Goldbloom, fundador y CEO de Kaggle
Tener datos limpios en cualquier proyecto de Data Science es muy importante, porque los resultados solo son tan buenos como los datos correctos. La limpieza de datos también es la parte que generalmente consume la mayor parte del tiempo y causa los mayores dolores para los científicos de datos. R ya ofrece un amplio conjunto de herramientas y funciones para manipular marcos de datos. Sin embargo, debido a su larga historia, el conjunto de herramientas base R disponible está fragmentado y es difícil de usar para nuevos usuarios.
El paquete dplyr facilita el proceso de transformación de datos a través de una colección consistente de funciones. Estas funciones admiten diferentes transformaciones en marcos de datos, que incluyen
Múltiples marcos de datos también se pueden unir mediante valores de atributo comunes.
La coherencia de las funciones de dplyr mejora la usabilidad y permite al usuario conectar transformaciones para formar canalizaciones de datos. Estas canalizaciones también se pueden ver como un lenguaje de consulta de alto nivel, como p. Ej. el lenguaje SQL para consultas de bases de datos. Además, incluso es posible traducir las canalizaciones de datos creadas a otros back-end, incluidas las bases de datos.
Cada función de transformación de datos en dplyr acepta un marco de datos como su primer parámetro de entrada y devuelve el marco de datos transformado como salida. Un plano para una función dplyr típica se ve así:
transformed <- dplyr_function(my_data_frame,
param_one,
param_two,
...)
La función dplyr_function
se puede personalizar aún más a través de argumentos adicionales (param_one
, param_two
) colocados después del primer parámetro de marco de datos (my_data_frame
).
El poder real de dplyr viene con el operador pipe %>%
que permite a los usuarios concatenar funciones de dplyr a pipe de datos. Pipe inyecta el marco de datos resultante del cálculo anterior como primer argumento del siguiente. Una transformación de datos que consta de tres funciones se parece a:
dplyr_function_three(
dplyr_function_two(
dplyr_function_one(input_data_frame)))
pero con pipe
se puede escribir de la siguiente manera:
input_data_frame %>%
dplyr_function_one() %>%
dplyr_function_two() %>%
dplyr_function_three()
El orden de lectura diferente de las funciones de transformación de datos en el orden de transformación real, hace que las canalizaciones sean más fáciles de leer que las llamadas a funciones anidadas.
Para seleccionar sólo un conjunto específico de columnas de marcos de datos interesantes, dplyr ofrece la función select()
para extraer columnas por nombres, índices y rangos. Incluso puede renombrar las columnas extraídas con select()
.
select()
select(my_data_frame, column_one, column_two, ...)
select(my_data_frame, new_column_name = current_column, ...)
select(my_data_frame, column_start:column_end)
select(my_data_frame, index_one, index_two, ...)
select(my_data_frame, index_start:index_end)
select(my_data_frame, column_one, column_two, ...)
En este capítulo veremos el conjunto de datos pres_results
del paquete politicaldata. Contiene datos sobre las elecciones presidenciales de EE.UU. desde 1976, convertidas en un Tibble para una mejor impresión.
# A tibble: 561 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1976 AK 123574 0.357 0.579 0.0549
2 1976 AL 1182850 0.557 0.426 0.0163
3 1976 AR 767535 0.650 0.349 0.00134
4 1976 AZ 742719 0.398 0.564 0.0383
5 1976 CA 7803770 0.480 0.497 0.0230
6 1976 CO 1081440 0.426 0.540 0.0336
7 1976 CT 1386355 0.467 0.519 0.0138
8 1976 DC 168830 0.816 0.165 0.0169
9 1976 DE 235642 0.520 0.466 0.0144
10 1976 FL 3150631 0.519 0.466 0.0143
# … with 551 more rows
Para este ejemplo, veremos el número total de votos en diferentes estados en diferentes elecciones. Como solo estamos interesados en la cantidad de personas que votaron, nos gustaría crear una versión personalizada del marco de datos pres_results
que solo contenga las columnas year
, state
y total_votes
. Para dicho filtrado, podemos usar la función select()
del paquete dplyr.
La función select()
toma un marco de datos como parámetro de entrada y nos permite decidir cuál de las columnas queremos mantener. El resultado de la función es un marco de datos con todas las filas, pero que contiene solo las columnas que seleccionamos explícitamente.
Podemos reducir nuestro conjunto de datos a solo year
, state
y total_votes
de la siguiente manera:
tibble(
select(pres_results, year, state, total_votes)
)
# A tibble: 561 × 3
year state total_votes
<dbl> <chr> <dbl>
1 1976 AK 123574
2 1976 AL 1182850
3 1976 AR 767535
4 1976 AZ 742719
5 1976 CA 7803770
6 1976 CO 1081440
7 1976 CT 1386355
8 1976 DC 168830
9 1976 DE 235642
10 1976 FL 3150631
# … with 551 more rows
Como primer parámetro pasamos el marco de datos pres_results
, como parámetros restantes pasamos las columnas que queremos mantener para select()
.
Además de mantener las columnas que queremos, la función select()
también las mantiene en el mismo orden que especificamos en los parámetros de la función.
Si cambiamos el orden de los parámetros cuando llamamos a la función, las columnas de la salida cambian en consecuencia:
tibble(
select(pres_results, total_votes, year, state)
)
# A tibble: 561 × 3
total_votes year state
<dbl> <dbl> <chr>
1 123574 1976 AK
2 1182850 1976 AL
3 767535 1976 AR
4 742719 1976 AZ
5 7803770 1976 CA
6 1081440 1976 CO
7 1386355 1976 CT
8 168830 1976 DC
9 235642 1976 DE
10 3150631 1976 FL
# … with 551 more rows
select(my_data_frame, new_column_name = current_column, ...)
Además de definir las columnas que queremos conservar, también podemos cambiarles el nombre. Para hacer esto, necesitamos establecer el nuevo nombre de columna dentro de la función select()
usando el comando
new_column_name = current_column
En el siguiente ejemplo, seleccionamos las columnas year
, state
y total_votes
pero cambiamos el nombre de la columna year
a Election
en la salida:
tibble(
select(pres_results, Election = year, state, total_votes)
)
# A tibble: 561 × 3
Election state total_votes
<dbl> <chr> <dbl>
1 1976 AK 123574
2 1976 AL 1182850
3 1976 AR 767535
4 1976 AZ 742719
5 1976 CA 7803770
6 1976 CO 1081440
7 1976 CT 1386355
8 1976 DC 168830
9 1976 DE 235642
10 1976 FL 3150631
# … with 551 more rows
select(my_data_frame, column_start:column_end)
Cuando usamos la función select()
y definimos las columnas que queremos mantener, dplyr en realidad no usa el nombre de las columnas sino el índice de las columnas en el marco de datos. Esto significa que, cuando definimos las primeras tres columnas del marco de datos pres_results
, year
, state
y total_votes
, dplyr convierte estos nombres en los valores de índice 1
, 2
y 3
. Por lo tanto, también podemos usar el nombre de las columnas, aplicar el operador :
y definir rangos de columnas, que queremos mantener:
tibble(
select(pres_results, year:total_votes)
)
# A tibble: 561 × 3
year state total_votes
<dbl> <chr> <dbl>
1 1976 AK 123574
2 1976 AL 1182850
3 1976 AR 767535
4 1976 AZ 742719
5 1976 CA 7803770
6 1976 CO 1081440
7 1976 CT 1386355
8 1976 DC 168830
9 1976 DE 235642
10 1976 FL 3150631
# … with 551 more rows
Lo que hace year:total_votes
, se puede traducir a 1:3
, que es simplemente crear un vector de valores numéricos del 1 al 3. Luego, la función select()
toma el marco de datos pres_results
y genera un subconjunto del mismo, manteniendo solo Las primeras tres columnas.
select(my_data_frame, index_one, index_two, ...)
select(my_data_frame, index_start:index_end)
La función select()
también se puede usar con índices de columna. En lugar de usar nombres, debemos especificar las columnas que queremos seleccionar por sus índices. En comparación con otros lenguajes de programación, la indexación en R comienza con uno en lugar de cero. Para seleccionar la primera, cuarta y quinta columna del conjunto de datos pres_results
podemos escribir
tibble(
select(pres_results, 1,4,5)
)
# A tibble: 561 × 3
year dem rep
<dbl> <dbl> <dbl>
1 1976 0.357 0.579
2 1976 0.557 0.426
3 1976 0.650 0.349
4 1976 0.398 0.564
5 1976 0.480 0.497
6 1976 0.426 0.540
7 1976 0.467 0.519
8 1976 0.816 0.165
9 1976 0.520 0.466
10 1976 0.519 0.466
# … with 551 more rows
De manera similar a la definición de rangos de columnas usando sus nombres, podemos definir rangos (o vectores) de valores de índice en su lugar:
tibble(
select(pres_results, 1:3)
)
# A tibble: 561 × 3
year state total_votes
<dbl> <chr> <dbl>
1 1976 AK 123574
2 1976 AL 1182850
3 1976 AR 767535
4 1976 AZ 742719
5 1976 CA 7803770
6 1976 CO 1081440
7 1976 CT 1386355
8 1976 DC 168830
9 1976 DE 235642
10 1976 FL 3150631
# … with 551 more rows
A menudo queremos operar sólo en un subconjunto específico de filas de un marco de datos. La función dplyr filter()
proporciona una forma flexible de extraer las filas de interés en base a múltiples condiciones.
filter()
para ordenar las filas de un marco de datos que cumplan una condición específicafilter(my_data_frame, condition)
La función filter()
toma un marco de datos y una o más expresiones de filtrado como parámetros de entrada. Procesa el marco de datos y mantiene solo las filas que cumplen con las expresiones de filtrado definidas. Estas expresiones pueden verse como reglas para la evaluación y el mantenimiento de filas. En la mayoría de los casos, se basan en operadores relacionales. Como ejemplo, podríamos filtrar el marco de datos pres_results
y mantener solo las filas, donde la variable de state
es igual a "CA"
(California):
tibble(
filter(pres_results, state == "CA")
)
# A tibble: 11 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1976 CA 7803770 0.480 0.497 0.0230
2 1980 CA 8582938 0.359 0.527 0.114
3 1984 CA 9505041 0.413 0.575 0.0122
4 1988 CA 9887065 0.476 0.511 0.0131
5 1992 CA 11131721 0.460 0.326 0.213
6 1996 CA 10019469 0.511 0.382 0.107
7 2000 CA 10965822 0.534 0.417 0.0490
8 2004 CA 12421353 0.543 0.444 0.0117
9 2008 CA 13561900 0.610 0.370 0.0188
10 2012 CA 13038547 0.602 0.371 0.0246
11 2016 CA 14181595 0.617 0.316 0.0581
En el resultado, podemos comparar los resultados de las elecciones en California para diferentes años.
Como otro ejemplo, podríamos filtrar el marco de datos pres_results
y mantener solo aquellas filas, donde la variable dem
(porcentaje de votos para el Partido Demócrata) es mayor que 0.85:
tibble(
filter(pres_results, dem > 0.85)
)
# A tibble: 7 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1984 DC 211288 0.854 0.137 0.00886
2 1996 DC 185726 0.852 0.0934 0.0513
3 2000 DC 201894 0.852 0.0895 0.0563
4 2004 DC 227586 0.892 0.0934 0.0125
5 2008 DC 265853 0.925 0.0653 0.00582
6 2012 DC 293764 0.909 0.0728 0.0155
7 2016 DC 312575 0.905 0.0407 0.0335
En el resultado podemos ver para cada año electoral los estados donde el Partido Demócrata obtuvo más del 85% de los votos. Según los resultados, podríamos decir que el Partido Demócrata tiene una base sólida de votantes en el Distrito de Columbia (conocido como Washington, D.C.).
filter(my_data_frame, condition_one, condition_two, ...)
La función filter()
también puede tomar múltiples reglas de filtrado como entrada. Estos pueden verse como una combinación de reglas con el operador &
. Para que una fila se incluya en la salida, todas las reglas de filtrado deben cumplirse. En el siguiente ejemplo, filtramos el marco de datos pres_results
para todas las filas donde la variable state
es igual a "CA"
y la variable de year
es igual a 2016:
tibble(
filter(pres_results, state == "CA", year==2016)
)
# A tibble: 1 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 2016 CA 14181595 0.617 0.316 0.0581
Obtenemos una sola fila como salida, que contiene los resultados de las elecciones presidenciales de 2016 en los Estados Unidos para el estado de California.
Ejercicio: Usar filter() con múltiples reglas El conjunto de datos del gapminder
contiene datos económicos y demográficos sobre diversos países desde 1952. Filtra el tibble e inspecciona qué países tenían una esperanza de vida de más de 80 años en el año 2007. Los paquetes necesarios ya están cargados.
filter()
en el tibble de gapminder.year
es igual a 2007 y la esperanza de vida lifeExp
es mayor de 80!Solución
tibble(
filter(gapminder, year==2007, lifeExp > 80)
)
# A tibble: 13 × 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Australia Oceania 2007 81.2 20434176 34435.
2 Canada Americas 2007 80.7 33390141 36319.
3 France Europe 2007 80.7 61083916 30470.
4 Hong Kong, China Asia 2007 82.2 6980412 39725.
5 Iceland Europe 2007 81.8 301931 36181.
6 Israel Asia 2007 80.7 6426679 25523.
7 Italy Europe 2007 80.5 58147733 28570.
8 Japan Asia 2007 82.6 127467972 31656.
9 New Zealand Oceania 2007 80.2 4115771 25185.
10 Norway Europe 2007 80.2 4627926 49357.
11 Spain Europe 2007 80.9 40448191 28821.
12 Sweden Europe 2007 80.9 9031088 33860.
13 Switzerland Europe 2007 81.7 7554661 37506.
Ejercicio El conjunto de datos del gapminder
contiene datos económicos y demográficos sobre diversos países desde 1952. Filtra el tibble de gapminder
e inspecciona qué países tenían una población de más de 1.000.000.000 en el año 2007! Los paquetes necesarios ya están cargados.
filter()
en el tibble gapminder
.year
es igual a 2007 y la población pop
es mayor de 1000000000!filter(gapminder, year==2007, pop > 1000000000)
# A tibble: 2 × 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 China Asia 2007 73.0 1318683096 4959.
2 India Asia 2007 64.7 1110396331 2452.
Para seleccionar las áreas de interés en un marco de datos, a menudo es necesario ordenarlas por columnas específicas. La función dplyr arrange()
permite ordenar los marcos de datos por múltiples columnas en orden ascendente y descendente.
arrange()
para ordenar los marcos de datos.arrange()
.arrange(my_data_frame, column_one)
arrange(my_data_frame, column_one, column_two, ...)
arrange(my_data_frame, column_one)
La función arrange()
ordena las filas de un marco de datos. Toma un marco de datos o un tibble como primer parámetro y los nombres de las columnas en función de los cuales las filas deben ordenarse como parámetros adicionales. Supongamos que queremos responder la pregunta: ¿Qué estados tuvieron el mayor porcentaje de votantes republicanos en las elecciones presidenciales de 2016 en los Estados Unidos? Para responder a esta pregunta, en el siguiente ejemplo usamos el marco de datos pres_results_2016
, que contiene información solo para las elecciones presidenciales de EE.UU. de 2016. Nuestra función arrange()
en el marco de datos rep
basado en la columna (votos republicanos en porcentaje):
pres_results_2016 <- pres_results %>%
filter(year==2016)
tibble(
arrange(pres_results_2016, rep)
)
# A tibble: 51 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 2016 DC 312575 0.905 0.0407 0.0335
2 2016 HI 437664 0.610 0.294 0.0958
3 2016 VT 320467 0.557 0.298 0.0737
4 2016 CA 14181595 0.617 0.316 0.0581
5 2016 MA 3378821 0.591 0.323 0.0858
6 2016 MD 2781446 0.603 0.339 0.0415
7 2016 NY 7802084 0.584 0.361 0.0530
8 2016 WA 3317019 0.525 0.368 0.0738
9 2016 IL 5536424 0.558 0.388 0.0517
10 2016 RI 464144 0.544 0.389 0.0466
# … with 41 more rows
Como puede ver en la salida, el marco de datos se ordena en orden ascendente según la columna rep
. Sin embargo, preferiríamos tener los resultados en orden descendente, para que podamos ver instantáneamente state
con el mayor porcentaje de repeticiones. Para ordenar una columna en orden descendente, todo lo que tenemos que hacer es aplicar la función desc()
en la columna dada dentro de la función arrange()
:
tibble(
arrange(pres_results_2016, desc(rep))
)
# A tibble: 51 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 2016 WV 713051 0.265 0.686 0.0489
2 2016 WY 258788 0.216 0.674 0.0830
3 2016 OK 1452992 0.289 0.653 0.0575
4 2016 ND 344360 0.272 0.630 0.0971
5 2016 KY 1924149 0.327 0.625 0.0476
6 2016 AL 2123372 0.344 0.621 0.0254
7 2016 SD 370093 0.317 0.615 0.0673
8 2016 TN 2508027 0.347 0.607 0.0401
9 2016 AR 1130635 0.337 0.606 0.0577
10 2016 ID 690255 0.275 0.593 0.132
# … with 41 more rows
La organización no solo es posible en valores numéricos, sino también en valores de caracteres. En ese caso, dplyr ordena las filas en orden alfabético. Podemos organizar columnas de caracteres como las numéricas:
tibble(
arrange(pres_results_2016, state)
)
# A tibble: 51 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 2016 AK 318608 0.366 0.513 0.0928
2 2016 AL 2123372 0.344 0.621 0.0254
3 2016 AR 1130635 0.337 0.606 0.0577
4 2016 AZ 2573165 0.451 0.487 0.0547
5 2016 CA 14181595 0.617 0.316 0.0581
6 2016 CO 2780220 0.482 0.433 0.0859
7 2016 CT 1644920 0.546 0.409 0.0435
8 2016 DC 312575 0.905 0.0407 0.0335
9 2016 DE 441590 0.534 0.419 0.0472
10 2016 FL 9420039 0.478 0.490 0.0315
# … with 41 more rows
También podemos usar la función arrange()
en varias columnas. En este caso, el orden de las columnas en los parámetros de la función establece una jerarquía de ordenamiento. La función comienza ordenando las filas en función de la primera columna definida en los parámetros. En caso de que haya varias filas con el mismo valor, la función decide el orden en función de la segunda columna definida en los parámetros. Si todavía hay varias filas con los mismos valores, la función decide en función de la tercera columna definida en los parámetros (si está definida) y así sucesivamente.
En el siguiente ejemplo, utilizamos el marco de datos pres_results_subset
, que contiene los resultados de las elecciones solo para los estados: "TX"
(Texas), "UT"
(Utah) y "FL"
(Florida). Primero ordenamos el marco de datos en orden descendente según la columna de year. Luego, agregamos un segundo nivel y ordenamos el marco de datos basado en la columna dem
:
tibble(
arrange(pres_results_subset, year, dem)
)
# A tibble: 33 × 6
year state total_votes dem rep other
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1976 UT 541218 0.336 0.624 0.0392
2 1976 TX 4071884 0.511 0.480 0.00817
3 1976 FL 3150631 0.519 0.466 0.0143
4 1980 UT 604152 0.206 0.728 0.0665
5 1980 FL 3686927 0.385 0.555 0.0597
6 1980 TX 4541636 0.414 0.553 0.0329
7 1984 UT 629656 0.247 0.745 0.00823
8 1984 FL 4180051 0.347 0.653 0.000212
9 1984 TX 5397571 0.361 0.636 0.00275
10 1988 UT 647008 0.320 0.662 0.0173
# … with 23 more rows
Como puede ver en la salida, el marco de datos se ordena en general en función de la columna year
. Sin embargo, cuando el valor de year
es el mismo, el orden de las filas lo decide la columna dem
.
Todas las funciones de transformación de datos en dplyr pueden ser conectadas a través del operador de tubería (pipe) %>%
para crear poderosas y a la vez expresivas tuberías de transformación de datos.
%>%
para combinar múltiples funciones dplyr en una tuberíamy_data_frame %>%
filter(___) %>%
select(___) %>%
arrange(___)
El operador pipe %>%
es una parte especial del universo tidyverse
. Se utiliza para combinar múltiples funciones y ejecutarlas una tras otra. En esta configuración, la entrada de cada función es la salida de la función anterior. Imagine que tenemos el marco de datos pres_results
y queremos crear un marco de datos más pequeño y transparente para responder a la pregunta: ¿En qué estados fue el partido democrático la opción más popular en las elecciones presidenciales de 2016 en los Estados Unidos? Para lograr esta tarea, deberíamos seguir los siguientes pasos:
filter()
el marco de datos para las filas, donde la variable year
es igual a 2016select()
las dos variables state
y dem
, ya que no estamos interesados en el resto de las columnas.arrange()
el marco de datos filtrado y seleccionado en función de la columna dem
de forma descendente.Los pasos y funciones descritos anteriormente deben ejecutarse uno tras otro, donde la entrada de cada función es la salida del paso anterior. Aplicando las cosas que aprendió hasta ahora, puede realizar esta tarea siguiendo los siguientes pasos:
result <- filter(pres_results, year==2016)
result <- select(result, state, dem)
result <- arrange(result, desc(dem))
tibble(result)
# A tibble: 51 × 2
state dem
<chr> <dbl>
1 DC 0.905
2 CA 0.617
3 HI 0.610
4 MD 0.603
5 MA 0.591
6 NY 0.584
7 IL 0.558
8 VT 0.557
9 NJ 0.555
10 CT 0.546
# … with 41 more rows
La primera función toma el marco de datos pres_results
, lo filtra de acuerdo con la descripción de la tarea y lo asigna a la variable result
. Luego, cada función posterior toma la variable result
como entrada y la sobrescribe con su propia salida.
El operador %>%
proporciona una forma práctica de combinar los pasos anteriores en aparentemente un paso. Toma un marco de datos como entrada inicial. Luego, aplica una lista de funciones y pasa la salida de cada función para la entrada de la siguiente función. La misma tarea que la anterior se puede lograr usando el operador de tubería %>%
de esta manera:
tibble(
pres_results %>%
filter(year==2016) %>%
select(state, dem, rep) %>%
arrange(desc(dem))
)
# A tibble: 51 × 3
state dem rep
<chr> <dbl> <dbl>
1 DC 0.905 0.0407
2 CA 0.617 0.316
3 HI 0.610 0.294
4 MD 0.603 0.339
5 MA 0.591 0.323
6 NY 0.584 0.361
7 IL 0.558 0.388
8 VT 0.557 0.298
9 NJ 0.555 0.414
10 CT 0.546 0.409
# … with 41 more rows
Podemos interpretar el código de la siguiente manera:
%>%
justo después del marco de datos le dice a dplyr, que viene una función, que toma el marco de datos previamente definido como entrada.%>%
después de un paso, dplyr esperará un paso adicional.arrange()
. Obtiene la versión filtrada y seleccionada del marco de datos pres_results
como entrada y la ordena en función de la columna dem
de forma descendente. Finalmente, devuelve la salida.Una diferencia entre los dos enfoques es que el operador %>%
no guarda permanentemente los resultados intermedios o finales. Para guardar el marco de datos resultante, debemos asignar la salida a una variable:
result <- pres_results %<>%
filter(year==2016) %>%
select(state, dem) %>%
arrange(desc(dem))
tibble(result)
# A tibble: 51 × 2
state dem
<chr> <dbl>
1 DC 0.905
2 CA 0.617
3 HI 0.610
4 MD 0.603
5 MA 0.591
6 NY 0.584
7 IL 0.558
8 VT 0.557
9 NJ 0.555
10 CT 0.546
# … with 41 more rows
Esperanza de vida austriaca
Utiliza el operador %>%
en el conjunto de datos de gapminder
y crea un simple marco de datos para responder a la siguiente pregunta: ¿Cómo ha cambiado la esperanza de vida en Austria en las últimas décadas? Los paquetes necesarios ya están cargados.
gapminder
como el marco de datos de basecountry
es igual a Austria
mediante la tubería gapminder
a la función filter()
.year
y lifeExp
del resultado filtrado.year
en función de las columnas seleccionadas.Solución:
gapminder %>%
filter(country == "Austria") %>%
select(year, lifeExp) %>%
arrange(year)
# A tibble: 12 × 2
year lifeExp
<int> <dbl>
1 1952 66.8
2 1957 67.5
3 1962 69.5
4 1967 70.1
5 1972 70.6
6 1977 72.2
7 1982 73.2
8 1987 74.9
9 1992 76.0
10 1997 77.5
11 2002 79.0
12 2007 79.8
PIB europeo per cápita
Utiliza el operador %>%
en el conjunto de datos de gapminder
y crea un simple tibble para responder a la siguiente pregunta: ¿Qué país europeo tuvo el mayor PIB per cápita en 2007? Los paquetes requeridos ya están cargados.
gapminder
como la entradayear
es igual a 2007
Europe
country
y gdpPercap
gdpPercap
de forma descendentegapminder %>%
filter(year == 2007, continent == "Europe") %>%
select(country, gdpPercap) %>%
arrange(desc(gdpPercap))
# A tibble: 30 × 2
country gdpPercap
<fct> <dbl>
1 Norway 49357.
2 Ireland 40676.
3 Switzerland 37506.
4 Netherlands 36798.
5 Iceland 36181.
6 Austria 36126.
7 Denmark 35278.
8 Sweden 33860.
9 Belgium 33693.
10 Finland 33207.
# … with 20 more rows
Población de las Américas
Utiliza el operador %>%
en el conjunto de datos de gapminder
y crea un simple tibble para responder a la siguiente pregunta: ¿Qué país del continente americano tenía la mayor población en 2007?
gapminder
como la entradayear
es igual a 2007
continent
es igual a Americas
country
y pop
pop
de forma descendentegapminder %>%
filter(year == 2007, continent == "Americas") %>%
select(country, pop) %>%
arrange(desc(pop))
# A tibble: 25 × 2
country pop
<fct> <int>
1 United States 301139947
2 Brazil 190010647
3 Mexico 108700891
4 Colombia 44227550
5 Argentina 40301927
6 Canada 33390141
7 Peru 28674757
8 Venezuela 26084662
9 Chile 16284741
10 Ecuador 13755680
# … with 15 more rows
For attribution, please cite this work as
Santos (2022, Jan. 10). Franklin Santos: Transformación de datos con dplyr. Retrieved from https://franklinsantos.com/posts/2022-01-10-diplyr/
BibTeX citation
@misc{santos2022transformación, author = {Santos, Franklin}, title = {Franklin Santos: Transformación de datos con dplyr}, url = {https://franklinsantos.com/posts/2022-01-10-diplyr/}, year = {2022} }