Logo
  • Source Code
  1. Operaciones
  2. Agrupación
  • Introducción
    • Introducción y recursos
    • Sintaxis básica
    • Importar y exportar datos
  • Operaciones
    • Filtros y selección de columnas
    • Modificación de columnas
    • Agrupación
    • Cadenas de operaciones
    • Uniones entre tablas

Agrupación

Ahora continuaremos usando el dataset de las plantas para sacar datos considerando agrupaciones. Por ejemplo podemos estimar cuántos registros hubo por año?

plants[, .N,  by = year]
      year     N
     <int> <int>
  1:  1983  2769
  2:  1998  2525
  3:  1990  2366
  4:  2003  1608
  5:  1970  1003
 ---            
190:  1846     2
191:  1832     1
192:  1852     1
193:  1873     1
194:  1788     1
Ejercicio

Podrías identificar en qué año se tienen más registros? No es necesario usar la nomeclatura de data.table.

Respuesta
tmp_plants <- plants[, .N,  by = year]
tmp_plants[order(-N)][1]
    year     N
   <int> <int>
1:  1986  3333

Como viste podemos usar la nomeclatura secuencialmente, pero esto sólo es un spoiler de los temas que verás a continuación.


Podemos también buscar el año más antiguo del que tenemos registro por familia

plants[, min(year),by=family]
            family    V1
            <char> <int>
  1:       Araceae    NA
  2:  Goodeniaceae  1919
  3:  Bromeliaceae    NA
  4: Commelinaceae    NA
  5:    Asteraceae    NA
 ---                    
493:   Ulvellaceae    NA
494:    Timmiaceae  1985
495:   Onocleaceae  1983
496: Lepicoleaceae  1973
497: Sarcobataceae  1972

Podemos usar by con mutiples factores? Por ejemplo saber cuántos registros tenemos por año para cada familia

plants[, .N,by=.(family, year)]
               family  year     N
               <char> <int> <int>
    1:        Araceae  1983    10
    2:   Goodeniaceae  1998     2
    3:   Bromeliaceae  1990    25
    4:  Commelinaceae  2003    16
    5:     Asteraceae  1970   145
   ---                           
14218: Gleicheniaceae  1986     1
14219:   Gentianaceae  2014     1
14220:  Hernandiaceae  2000     1
14221:       Fabaceae  1841     1
14222:   Polygalaceae  2014     1
Ejercicio

En qué año y para qué familia hay más registros?

Respuesta
temp_plants2 <- plants[, .N,by=.(family, year)]
temp_plants2[order(-N)][1]
       family  year     N
       <char> <int> <int>
1: Asteraceae  1986   483