Pivot a Data/LazyFrame from wide to long
Usage
# S3 method for class 'RPolarsDataFrame'
pivot_longer(
data,
cols,
...,
names_to = "name",
names_prefix = NULL,
values_to = "value"
)
# S3 method for class 'RPolarsLazyFrame'
pivot_longer(
data,
cols,
...,
names_to = "name",
names_prefix = NULL,
values_to = "value"
)
Arguments
- data
A Polars Data/LazyFrame
- cols
Columns to pivot into longer format. Can be anything accepted by
dplyr::select()
.- ...
Dots which should be empty.
- names_to
The (quoted) name of the column that will contain the column names specified by
cols
.- names_prefix
A regular expression used to remove matching text from the start of each variable name.
- values_to
A string specifying the name of the column to create from the data stored in cell values.
Unknown arguments
Arguments that are supported by the original implementation in the tidyverse
but are not listed above will throw a warning by default if they are
specified. To change this behavior to error instead, use
options(tidypolars_unknown_args = "error")
.
Examples
pl_relig_income <- polars::pl$DataFrame(tidyr::relig_income)
#> Warning: Passing a `data.frame` or `RPolarsDataFrame` to `pl$DataFrame()` is deprecated and will be removed in the future. Use `as_polars_df()` instead.
pl_relig_income
#> shape: (18, 11)
#> ┌────────────────────┬───────┬─────────┬─────────┬───┬──────────┬───────────┬───────┬──────────────┐
#> │ religion ┆ <$10k ┆ $10-20k ┆ $20-30k ┆ … ┆ $75-100k ┆ $100-150k ┆ >150k ┆ Don't │
#> │ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ know/refused │
#> │ str ┆ f64 ┆ f64 ┆ f64 ┆ ┆ f64 ┆ f64 ┆ f64 ┆ --- │
#> │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ f64 │
#> ╞════════════════════╪═══════╪═════════╪═════════╪═══╪══════════╪═══════════╪═══════╪══════════════╡
#> │ Agnostic ┆ 27.0 ┆ 34.0 ┆ 60.0 ┆ … ┆ 122.0 ┆ 109.0 ┆ 84.0 ┆ 96.0 │
#> │ Atheist ┆ 12.0 ┆ 27.0 ┆ 37.0 ┆ … ┆ 73.0 ┆ 59.0 ┆ 74.0 ┆ 76.0 │
#> │ Buddhist ┆ 27.0 ┆ 21.0 ┆ 30.0 ┆ … ┆ 62.0 ┆ 39.0 ┆ 53.0 ┆ 54.0 │
#> │ Catholic ┆ 418.0 ┆ 617.0 ┆ 732.0 ┆ … ┆ 949.0 ┆ 792.0 ┆ 633.0 ┆ 1489.0 │
#> │ Don’t know/refused ┆ 15.0 ┆ 14.0 ┆ 15.0 ┆ … ┆ 21.0 ┆ 17.0 ┆ 18.0 ┆ 116.0 │
#> │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │
#> │ Orthodox ┆ 13.0 ┆ 17.0 ┆ 23.0 ┆ … ┆ 38.0 ┆ 42.0 ┆ 46.0 ┆ 73.0 │
#> │ Other Christian ┆ 9.0 ┆ 7.0 ┆ 11.0 ┆ … ┆ 18.0 ┆ 14.0 ┆ 12.0 ┆ 18.0 │
#> │ Other Faiths ┆ 20.0 ┆ 33.0 ┆ 40.0 ┆ … ┆ 46.0 ┆ 40.0 ┆ 41.0 ┆ 71.0 │
#> │ Other World ┆ 5.0 ┆ 2.0 ┆ 3.0 ┆ … ┆ 3.0 ┆ 4.0 ┆ 4.0 ┆ 8.0 │
#> │ Religions ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │
#> │ Unaffiliated ┆ 217.0 ┆ 299.0 ┆ 374.0 ┆ … ┆ 407.0 ┆ 321.0 ┆ 258.0 ┆ 597.0 │
#> └────────────────────┴───────┴─────────┴─────────┴───┴──────────┴───────────┴───────┴──────────────┘
pl_relig_income |>
pivot_longer(!religion, names_to = "income", values_to = "count")
#> shape: (180, 3)
#> ┌──────────────┬────────────────────┬───────┐
#> │ religion ┆ income ┆ count │
#> │ --- ┆ --- ┆ --- │
#> │ str ┆ str ┆ f64 │
#> ╞══════════════╪════════════════════╪═══════╡
#> │ Agnostic ┆ <$10k ┆ 27.0 │
#> │ Agnostic ┆ $10-20k ┆ 34.0 │
#> │ Agnostic ┆ $20-30k ┆ 60.0 │
#> │ Agnostic ┆ $30-40k ┆ 81.0 │
#> │ Agnostic ┆ $40-50k ┆ 76.0 │
#> │ … ┆ … ┆ … │
#> │ Unaffiliated ┆ $50-75k ┆ 528.0 │
#> │ Unaffiliated ┆ $75-100k ┆ 407.0 │
#> │ Unaffiliated ┆ $100-150k ┆ 321.0 │
#> │ Unaffiliated ┆ >150k ┆ 258.0 │
#> │ Unaffiliated ┆ Don't know/refused ┆ 597.0 │
#> └──────────────┴────────────────────┴───────┘
pl_billboard <- polars::pl$DataFrame(tidyr::billboard)
#> Warning: Passing a `data.frame` or `RPolarsDataFrame` to `pl$DataFrame()` is deprecated and will be removed in the future. Use `as_polars_df()` instead.
pl_billboard
#> shape: (317, 79)
#> ┌──────────────────┬─────────────────────────┬──────────────┬──────┬───┬──────┬──────┬──────┬──────┐
#> │ artist ┆ track ┆ date.entered ┆ wk1 ┆ … ┆ wk73 ┆ wk74 ┆ wk75 ┆ wk76 │
#> │ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │
#> │ str ┆ str ┆ date ┆ f64 ┆ ┆ bool ┆ bool ┆ bool ┆ bool │
#> ╞══════════════════╪═════════════════════════╪══════════════╪══════╪═══╪══════╪══════╪══════╪══════╡
#> │ 2 Pac ┆ Baby Don't Cry (Keep... ┆ 2000-02-26 ┆ 87.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ 2Ge+her ┆ The Hardest Part Of ... ┆ 2000-09-02 ┆ 91.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ 3 Doors Down ┆ Kryptonite ┆ 2000-04-08 ┆ 81.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ 3 Doors Down ┆ Loser ┆ 2000-10-21 ┆ 76.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ 504 Boyz ┆ Wobble Wobble ┆ 2000-04-15 ┆ 57.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │
#> │ Yankee Grey ┆ Another Nine Minutes ┆ 2000-04-29 ┆ 86.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ Yearwood, Trisha ┆ Real Live Woman ┆ 2000-04-01 ┆ 85.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ Ying Yang Twins ┆ Whistle While You Tw... ┆ 2000-03-18 ┆ 95.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ Zombie Nation ┆ Kernkraft 400 ┆ 2000-09-02 ┆ 99.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> │ matchbox twenty ┆ Bent ┆ 2000-04-29 ┆ 60.0 ┆ … ┆ null ┆ null ┆ null ┆ null │
#> └──────────────────┴─────────────────────────┴──────────────┴──────┴───┴──────┴──────┴──────┴──────┘
pl_billboard |>
pivot_longer(
cols = starts_with("wk"),
names_to = "week",
names_prefix = "wk",
values_to = "rank",
)
#> shape: (24_092, 5)
#> ┌─────────────────┬─────────────────────────┬──────────────┬──────┬──────┐
#> │ artist ┆ track ┆ date.entered ┆ week ┆ rank │
#> │ --- ┆ --- ┆ --- ┆ --- ┆ --- │
#> │ str ┆ str ┆ date ┆ str ┆ f64 │
#> ╞═════════════════╪═════════════════════════╪══════════════╪══════╪══════╡
#> │ 2 Pac ┆ Baby Don't Cry (Keep... ┆ 2000-02-26 ┆ 2 ┆ 82.0 │
#> │ 2 Pac ┆ Baby Don't Cry (Keep... ┆ 2000-02-26 ┆ 76 ┆ null │
#> │ 2 Pac ┆ Baby Don't Cry (Keep... ┆ 2000-02-26 ┆ 75 ┆ null │
#> │ 2 Pac ┆ Baby Don't Cry (Keep... ┆ 2000-02-26 ┆ 74 ┆ null │
#> │ 2 Pac ┆ Baby Don't Cry (Keep... ┆ 2000-02-26 ┆ 73 ┆ null │
#> │ … ┆ … ┆ … ┆ … ┆ … │
#> │ matchbox twenty ┆ Bent ┆ 2000-04-29 ┆ 32 ┆ 28.0 │
#> │ matchbox twenty ┆ Bent ┆ 2000-04-29 ┆ 56 ┆ null │
#> │ matchbox twenty ┆ Bent ┆ 2000-04-29 ┆ 17 ┆ 2.0 │
#> │ matchbox twenty ┆ Bent ┆ 2000-04-29 ┆ 3 ┆ 29.0 │
#> │ matchbox twenty ┆ Bent ┆ 2000-04-29 ┆ 76 ┆ null │
#> └─────────────────┴─────────────────────────┴──────────────┴──────┴──────┘