【R】dplyover

1. はじめに

dplyoverは、dplyrの機能拡張を目指すパッケージです。主にColumnを操作するacrossの拡張です。

2. インストール

Githubからインストールできます。

remotes::install_github("TimTeaFan/dplyover")

3. つかってみる

ラグをつけてカラムを拡張します。

library(dplyr)
library(dplyover)

tibble(dat = 1:12) %>%
  mutate(over(c(1:3),
              list(lag  = ~ lag(dat, .x)),
              .names = "dat_{fn}{x}"))
# A tibble: 12 x 4
     dat dat_lag1 dat_lag2 dat_lag3
   <int>    <int>    <int>    <int>
 1     1       NA       NA       NA
 2     2        1       NA       NA
 3     3        2        1       NA
 4     4        3        2        1
 5     5        4        3        2
 6     6        5        4        3
 7     7        6        5        4
 8     8        7        6        5
 9     9        8        7        6
10    10        9        8        7
11    11       10        9        8
12    12       11       10        9
iris <- as_tibble(iris)

iris %>%
  transmute(
    crossover(starts_with("petal"),
              1:5,
              list(times = ~ .x * .y),
              .names = "{xcol}_{fn}{y}")) %>%
  glimpse
Rows: 150
Columns: 10
$ Petal.Length_times1 <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, ~
$ Petal.Length_times2 <dbl> 2.8, 2.8, 2.6, 3.0, 2.8, 3.4, 2.8, ~
$ Petal.Length_times3 <dbl> 4.2, 4.2, 3.9, 4.5, 4.2, 5.1, 4.2, ~
$ Petal.Length_times4 <dbl> 5.6, 5.6, 5.2, 6.0, 5.6, 6.8, 5.6, ~
$ Petal.Length_times5 <dbl> 7.0, 7.0, 6.5, 7.5, 7.0, 8.5, 7.0, ~
$ Petal.Width_times1  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, ~
$ Petal.Width_times2  <dbl> 0.4, 0.4, 0.4, 0.4, 0.4, 0.8, 0.6, ~
$ Petal.Width_times3  <dbl> 0.6, 0.6, 0.6, 0.6, 0.6, 1.2, 0.9, ~
$ Petal.Width_times4  <dbl> 0.8, 0.8, 0.8, 0.8, 0.8, 1.6, 1.2, ~
$ Petal.Width_times5  <dbl> 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.5, ~

4.さいごに

dplyrをさらに拡張して使い勝手が向上しています。

Add a Comment

メールアドレスが公開されることはありません。