非整然化(高度な制御)

概要

tidyrパッケージに含まれるpivot_wider_spec(), build_wider_spec()は、pivot_wider()のより低レベルなインターフェイスを提供します。基本的な使い方は解説しないため、基本的な使い方を知りたい方はpivot_wider()を参照してください。

関連ページ

関数

# 仕様書に従ってpivot_wider()を実施する
pivot_wider_spec(
  data,
  spec,
  names_repair = "check_unique",
  id_cols = NULL,
  values_fill = NULL,
  values_fn = NULL
)

# 仕様書の作成
build_wider_spec(
  data,
  names_from = name,
  values_from = value,
  names_prefix = "",
  names_sep = "_"
)
引数指定説明
data必須データフレーム
spec必須変換する条件を記した仕様書
その他の引数の意味はpivot_wider()を参照してください

使い方

解説用データフレーム

tbl <- tibble (
  id = c(1, 1, 2, 2, 3),
  name = c('x1', 'x2', 'x1', 'x2', 'x1'),
  value = c('A', 'a', 'B', 'b', 'C'),
)
> tbl
# A tibble: 5 x 3
     id name  value
  <dbl> <chr> <chr>
1     1 x1    A
2     1 x2    a
3     2 x1    B
4     3 x2    b
5     3 x1    C

1.基本的な使い方

# specオブジェクトを作成
spec <- build_wider_spec(tbl, names_from = name, values_from = value)

# 非整然化を行う
pivot_wider_spec(tbl, spec)
> spec
# A tibble: 2 x 3
  .name .value name
  <chr> <chr>  <chr>
1 x1	value  x1		
2 x2	value  x2

# A tibble: 3 x 3
     id x1    x2
  <dbl> <chr> <chr>
1     1 A     a
2     2 B     b
3     3 C     NA

2.仕様書の中身

処理の内容を記した仕様書(spec)pivot_wider_spec()に渡すことで動作します。仕様書の中身と対応する引数を以下に示します。

余談ですが、仕様書の構成はpivot_longer_spec()と同じです。

Sponsored Link