data.table
High-performance data manipulation with concise syntax: DT[i, j, by] — "take DT, subset rows using i, calculate j, grouped by by".
High-performance data manipulation with concise syntax: DT[i, j, by] — "take DT, subset rows using i, calculate j, grouped by by".
dtplyr translates dplyr code into data.table; tidytable offers tidyverse syntax with data.table speed.
library(data.table)
DT <- as.data.table(penguins)
DT <- fread("big.csv")
DT[species == "Adelie"] # filter rows
DT[order(-body_mass_g)] # sort
DT[, .(species, body_mass_g)] # select columns (.() = list())
DT[, .(mean_mass = mean(body_mass_g, na.rm = TRUE)), by = species] # grouped summary
DT[, .N, by = .(species, island)] # counts
DT[, mass_kg := body_mass_g / 1000] # add column BY REFERENCE (no copy)
DT[, c("a", "b") := .(1, 2)] # multiple columns
DT[, mass_kg := NULL] # delete column
DT[body_mass_g > 5000, big := TRUE] # conditional update
DT[, lapply(.SD, mean, na.rm = TRUE), by = species, .SDcols = patterns("_mm$")]
DT[, head(.SD, 2), by = species] # top rows per group
DT[, rank := frank(-body_mass_g), by = species]
# Keys & joins
setkey(DT, species)
DT["Gentoo"] # fast keyed lookup
X[Y, on = "id"] # right join of Y onto X
X[Y, o
…