Recuerda que tenemos diversos posts y dictamos cursos de programación, pesquerías, ecología, entre otros. Te invitamos a revisar la lista completa de nuestros posts en nuestra sección Posts y suscribirte a nuestras redes en Facebook y X para enterarte de nuestros cursos y de sus aperturas próximas.
En el análisis de datos, es importante tener datos limpios y sin errores. Los datos duplicados pueden causar problemas, como sesgos en los resultados del análisis. Por eso, es importante saber cómo eliminarlos.
El primer paso es ir a la pestaña Datos y dar click en el botón Quitar duplicados.
A continuación, se abrirá una ventana en donde podremos indicar qué columnas deseamos incluir para considerar en la remoción de datos duplicados. En nuestro ejemplo, hacemos click en Seleccionar todo y luego en Aceptar.
Se mostrará una ventana a modo de reporte en donde nos indica que se halló 2045 filas con datos duplicados y que la tabla resultado contiene 955 filas.
En R
Iniciaremos cargando el archivo de Excel en R a través de la función read_excel del paquete readxl. Los detalles de cómo leer archivos de Excel en R los puedes encontrar en nuestro artículo ¿Cómo cargar (leer) una tabla de Excel en R?. Así mismo, cargaremos el paquete dplyr.
# A tibble: 955 × 5
fecha captura lon lat embarcacion
<dttm> <dbl> <dbl> <dbl> <chr>
1 2010-01-02 00:00:00 543. -83.8 -6.63 E
2 2009-10-17 00:00:00 769. -85.9 -6.06 E
3 2010-01-04 00:00:00 497. -81.1 -8.26 C
4 2009-12-04 00:00:00 654. -84.7 -5.57 C
5 2009-12-31 00:00:00 436. -78.4 -11.6 E
6 2009-12-15 00:00:00 559. -81.1 -13.5 B
7 2010-02-20 00:00:00 695. -80.4 -11.5 E
8 2009-12-03 00:00:00 506. -82.5 -9.09 C
9 2009-11-02 00:00:00 540. -80.6 -8.62 D
10 2009-12-03 00:00:00 391. -79.0 -10.6 E
# ℹ 945 more rows
Observamos que en la tabla sin_duplicados contiene 955 filas, es decir, exactamente el mismo resultado que con el ejemplo realizado en Excel.
¿Qué significan los comandos |> y %>%?
Ambos comandos hacen referencia a operadores de R llamados pipe. La principal diferencia entre ambos es que %>% fue implementado por el paquete magrittr, mientras que |> lo implementa nativamente R desde su versión 4.1.0.
En cualquiera de los casos, permiten tomar todo lo que se encuentre a la izquierda del comando y pasarlo como valor (de primer argumento) a la función que se ejecute a la derecha del pipe.
La ventaja que proponen es la posibilidad de hacer crear comandos muy largos (en donde lo que cambia es sobre todo el primer argumento) que crecen hacia abajo en lugar de hacia la derecha:
# Esto...length(unique(iris$Species))
[1] 3
# ...equivale a estoiris$Species %>%unique() %>%length()
[1] 3
# ...y a estoiris$Species |>unique() |>length()
[1] 3
Existen algunas diferencias y consideraciones adicionales, como por ejemplo que %>% permite omitir los paréntesis de la función a la derecha del pipesiempre y cuando no se desee ejecutar ningún argumento adicional.
iris$Species %>% unique %>% length
[1] 3
iris$Species %>%unique() %>%length()
[1] 3
Esto último NO es posible con el pipe|> de R, en donde SIEMPRE se requerirán los paréntesis en la función de la derecha.
Quitar duplicados utilizando algunas columnas
Como vimos anteriormente, en Excel es posible seleccionar qué columnas deseamos utilizar para la búsqueda de duplicados. Entonces, ¿qué hacer si deseamos, por ejemplo, quitar únicamente las filas con datos duplicados en las columnas fecha y embarcacion?
sin_duplicados <- puntos_pesca |># Colocar las columnas separadas por comasdistinct(fecha, embarcacion)sin_duplicados
# A tibble: 612 × 2
fecha embarcacion
<dttm> <chr>
1 2010-01-02 00:00:00 E
2 2009-10-17 00:00:00 E
3 2010-01-04 00:00:00 C
4 2009-12-04 00:00:00 C
5 2009-12-31 00:00:00 E
6 2009-12-15 00:00:00 B
7 2010-02-20 00:00:00 E
8 2009-12-03 00:00:00 C
9 2009-11-02 00:00:00 D
10 2009-12-03 00:00:00 E
# ℹ 602 more rows
Por defecto, distinct devolverá una tabla considerando únicamente las columnas utilizadas para el filtrado. Si deseamos que devuelva todas las columnas, bastará con definir el argumento .keep_all = TRUE:
# A tibble: 612 × 5
fecha captura lon lat embarcacion
<dttm> <dbl> <dbl> <dbl> <chr>
1 2010-01-02 00:00:00 543. -83.8 -6.63 E
2 2009-10-17 00:00:00 769. -85.9 -6.06 E
3 2010-01-04 00:00:00 497. -81.1 -8.26 C
4 2009-12-04 00:00:00 654. -84.7 -5.57 C
5 2009-12-31 00:00:00 436. -78.4 -11.6 E
6 2009-12-15 00:00:00 559. -81.1 -13.5 B
7 2010-02-20 00:00:00 695. -80.4 -11.5 E
8 2009-12-03 00:00:00 506. -82.5 -9.09 C
9 2009-11-02 00:00:00 540. -80.6 -8.62 D
10 2009-12-03 00:00:00 391. -79.0 -10.6 E
# ℹ 602 more rows
Ventajas
Si bien podría parecer similar el tiempo de desarrollo y ejecución de estos procesos en ambos programas (Excel y R), debemos teneer en cuenta que hacerlo en R tiene ventajas como:
Escalabilidad: R es un lenguaje de programación, por lo que si se desea aplicar un mismo proceso a varios archivos de un formato similar, bastará con incluir nuestro script dentro de un bucle.
Cantidad de datos: Excel NO es un software preparado para trabajar con grandes cantidades de datos o tablas (límite de 1 048 576 filas). Por otro lado, en R los límites los define la RAM de nuestro equipo y a la fecha existen varios paquetes (dplyr, tidyr, data.table, etc.) que permiten manejar tablas con decenas de millones de filas en tiempos razonables.
Gama de funciones: Trabajar los datos en R pone a disposición del usuario una enorme variedad de funciones distribuidas en diversos paquetes (librerías), los cuales proporcionan herramientas estadísticas, de limpieza de datos, análisis SIG, figuras, diseño web, entre otros.