Poorman
A poor man's dependency free grammar of data manipulation
Install / Use
/learn @nathaneastwood/PoormanREADME
<a name="readme-top"></a>
{poorman} <a href='https://nathaneastwood.github.io/tags/poorman/'><img src='man/figures/logo.png' align="right" height="139" /></a>
<blockquote align="center"> I’d seen my father. He was a poor man, and I watched him do astonishing things. - Sidney Poitier </blockquote>Overview
{poorman} is a grammar of data manipulation, providing dependency free versions of {dplyr} verbs that help you solve the most common data manipulation challenges:
select()picks variables based on their names.mutate()adds new variables that are functions of existing variables.filter()picks cases based on their values.summarise()reduces multiple values down to a single summary.arrange()changes the ordering of the rows.
{poorman} attempts to replicate the {dplyr} API exactly such that your
{dplyr} code will still run even if you use {poorman} in its place. In
addition to replicating {dplyr} functionality, {poorman} implements
other functionality from the wider {tidyverse} such as select helpers
and the pipe, %>%.
For more details on the functionality available within {poorman}, check out the {poorman} series of blog posts here.
<p align="right"> (<a href="#readme-top">back to top</a>) </p>Installation
You can install:
- the development version from GitHub with
# install.packages("remotes")
remotes::install_github("nathaneastwood/poorman")
- the latest release from CRAN with
install.packages("poorman")
<p align="right">
(<a href="#readme-top">back to top</a>)
</p>
Docker
If you’d like to try out the latest version of the package on CRAN using Docker, you can run the latest image with:
docker run --rm -it nathaneastwood/poorman
<p align="right">
(<a href="#readme-top">back to top</a>)
</p>
Usage
library(poorman, warn.conflicts = FALSE)
#
# I'd seen my father. He was a poor man, and I watched him do astonishing things.
# - Sidney Poitier
mtcars %>%
select(mpg, wt, starts_with("c")) %>%
mutate(kpl = (1.609 * mpg) / 3.785, wt_kg = wt * 453.5924) %>%
filter(mpg > 28)
# mpg wt cyl carb kpl wt_kg
# Fiat 128 32.4 2.200 4 1 13.77321 997.9033
# Honda Civic 30.4 1.615 4 2 12.92301 732.5517
# Toyota Corolla 33.9 1.835 4 1 14.41086 832.3421
# Lotus Europa 30.4 1.513 4 2 12.92301 686.2853
mtcars %>%
group_by(am, cyl) %>%
summarise(mean_mpg = mean(mpg), sd_mpg = sd(mpg)) %>%
ungroup()
# am cyl mean_mpg sd_mpg
# 1 0 4 22.90000 1.4525839
# 2 0 6 19.12500 1.6317169
# 3 0 8 15.05000 2.7743959
# 4 1 4 28.07500 4.4838599
# 5 1 6 20.56667 0.7505553
# 6 1 8 15.40000 0.5656854
<p align="right">
(<a href="#readme-top">back to top</a>)
</p>
Related Work
- {dplyr}
- {bplyr} - imports {magrittr} and
{rlang}; it prepends functions with
b_*(), e.g.b_select(). - {tbltools} - imports
{magrittr} and appends
*_data()to each of its functions, e.g.select_data().
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
