Skip to main content

r-collapse

Use when code loads or uses collapse (library(collapse), collapse::), performing fast grouped or weighted statistics in R, or seeking faster alternatives to dplyr aggregation

Ir para a instalação

Informações da origem

Repositório
arthurgailes/r-package-skills
Última atividade na origem
29 de abril de 2026 às 12:34
Idioma detectado do SKILL.md
inglês
Estrelas
21
Forks
1

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
8 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
r-collapse
description
Use when code loads or uses collapse (library(collapse), collapse::), performing fast grouped or weighted statistics in R, or seeking faster alternatives to dplyr aggregation
# collapse: Fast Data Transformation ## Overview **collapse provides C/C++-based high-performance grouped and weighted statistics.** 50-100x faster than dplyr for grouped operations, matches data.table speed while working with any data frame type (tibbles, data.tables, xts). **Core principle:** Fast aggregation, transformation, and panel data operations through vectorized C code. ## References Read `references/API.md` before writing code. - `references/API.md` - Complete function reference - `references/collapse-for-tidyverse-users.md` - Migration guide and patterns - `references/collapse-documentation.md` - Core concepts and usage - `references/collapse-and-sf.md` - Working with spatial data - `references/collapse-object-handling.md` - Data structure handling ## When to Use **Use collapse when:** - Dataset >100k rows - Weighted statistics required - Panel data (between/within transformations) - Time series lags/diffs/growth rates - Performance bottleneck in dplyr pipeline **Don't use:** - Small datasets (<10k rows) - dplyr is clearer - Need arbitrary grouped functions (use dplyr) - Working with sf (use sf and dplyr) - Need reference semantics/in-place modification (use data.table) - Complex joins (data.table's keyed/rolling/non-equi joins better) **vs Alternatives:** | Scenario | Use This | | ------------------------- | ---------- | | Large grouped stats | collapse | | Weighted computations | collapse | | sf manipulation | dplyr | | Reference semantics | data.table | | Complex joins | data.table | | Arbitrary group functions | dplyr | ## Quick Reference | Task | Function/Example | | ----------------- | ----------------------------------------- | | **Grouped stats** | `fmean()`, `fsum()`, `fsd()`, `fmedian()` | | **Aggregation** | `collap(df, ~ by, list(fmean, fsd))` | | **Transform** | `ftransform()`, `fmutate()` | | **Selection** | `fselect()`, `fsubset()` (~100x faster) | | **Time series** | `flag()`, `fdiff()`, `fgrowth()` | | **Panel data** | `fwithin()`, `fbetween()`, `qsu()` | | **Grouping** | `fgroup_by()`, `GRP()` | ## Core Pattern ```r library(collapse) # Basic: grouped mean (50-100x faster than dplyr) data |> fgroup_by(category) |> fmean() # Weighted aggregation data |> fgroup_by(region) |> fmean(w = weight_col) # Multiple stats at once collap(data, ~ category, list(fmean, fsd, fmedian)) # TRA transformations (key differentiator - single C pass) data |> fgroup_by(id) |> fmean(TRA = "-") # Demean: subtract group mean data |> fgroup_by(id) |> fsd(TRA = "/") # Scale: divide by group SD data |> fgroup_by(id) |> fmean(TRA = "fill") # Fill: replace NA with group mean # See references/API.md for full TRA options ("-", "/", "fill", "-+", "replace") ``` ## Common Mistakes | Mistake | Fix | | ------------------------------------------ | -------------------------------------------------------- | | Using `group_by()` with collapse functions | Use `fgroup_by()` or pass `g = GRP(groupvar)` | | `collap()` applies to ALL numeric columns | Explicitly select columns before calling | | Expecting `na.rm = FALSE` default | collapse defaults to `na.rm = TRUE` | | `fwithin()`/`fbetween()` collapse rows | They return same # rows (centered/group means) | | Global options affect behavior | Set arguments explicitly in package code | | Ignoring `sort = FALSE` speedup | Add `sort = FALSE` when order doesn't matter (3x faster) | ## Advanced See `references/` for API reference, vignette content (tidyverse comparison, sf integration, object handling, development guidelines), and panel data patterns. **Validator:** `lib/r-validators/numerical-validator.R` **Resources:** [Docs](https://sebkrantz.github.io/collapse/)
Ver no GitHub