# R の pivot_longer 関数: データフレームの縦長、横長を変換する
このページが長くなったので、pivot_wider() は別のページに移しました。以下のリンクからどうぞ。
広告
## pivot() 系の関数とは
pivot() 系の関数には、pivot_longer() および pivot_wider() が含まれ、それぞれデータを縦長、横長に変換する。
ggplot2 のインプットが縦長のデータフレームなので、これを使う場合に pivot() 関数で前処理することが多い。
## pivot_longer() 関数の使い方
組み込みデータセット の mtcars を使ってみる。このデータは、以下のように車の種類が行に、mpg (マイル/ガロン、燃費の指標)、hp (馬力 horse power) などが列になっている。
これは、このページで説明しているところの
|Mazda RX4
|mpg
|21.0
|Mazda RX4 Wag
|Datsun 710
|22.8
|以下略
pivot_longer() の基本的な syntax は以下の通り。cols で指定した列の名前が names_to の列へ行き、値が values_to の列へ行く。
### 1 つのパラメーターを指定
具体例を見てみよう。mpg のみに興味がある場合、cyl などの余計な列は予め除いておく。
mtcars2 <- select(mtcars, mpg) %>% tibble::rownames_to_column(var = "car")
# pivot_longer で変換する
Long <- pivot_longer(mtcars2, cols = c("mpg"), names_to = "parameter", values_to = "value")
### 2 つのパラメーターを指定
mpg と cyl を変換後のデータに含めたい場合。縦長なので、完成系は以下のようなイメージになる。
|cyl
|6
|4
|略
この場合は、mpg と cyl の 2 行を選択して pivot_longer を使う。デフォルトの設定では、car でソートしているようだ。
Long2 <- pivot_longer(mtcars2, cols = c("mpg", "cyl"), names_to = "parameter", values_to = "value")
### 全てのパラメーターを指定
全てのパラメーターを含めたい場合は、次のようになる。
ここで注意するのは、対象とする列を指定しているベクター param に car が含まれていないことである。car を含めるというのは、つまり以下のようなテーブルを作ることである。
|parameters
|values
|car
この場合、values の列に数値と Mazda RX4 などの文字列がどちらも入ることになる。これは以下のようなエラーになる。
Error in `pivot_longer_spec()`:
! Can't combine `car` <character> and `mpg` <double>.
単純に、
## References
## コメント欄