R でワイド形式とロング形式の間でデータを再形成する方法
R のデータ フレームは、 ワイド形式またはロング形式で表示できます。
目的に応じて、データ フレームをこれらの特定の形式のいずれかにすることが必要な場合があります。
これらの形式の間でデータを再形成する最も簡単な方法は、R のTidyrパッケージにある次の 2 つの関数を使用することです。
- pivot_longer() : データ ブロックをワイド フォーマットからロング フォーマットに再形成します。
- pivot_wider() : データ ブロックをロング フォーマットからワイド フォーマットに再形成します。
以下の例は、各機能の実際の使用方法を示しています。
例 1: データをワイドからロングに再形成する
現在ワイド形式である次のデータ フレームが R にあるとします。
#create data frame
df <- data. frame (player=c('A', 'B', 'C', 'D'),
year1=c(12, 15, 19, 19),
year2=c(22, 29, 18, 12))
#view data frame
df
player year1 year2
1 to 12 22
2 B 15 29
3 C 19 18
4 D 19 12
pivot_longer()関数を使用して、このデータ フレームを長い形式に回転できます。
library (tidyr)
#pivot the data frame into a long format
df %>% pivot_longer(cols=c(' year1 ', ' year2 '),
names_to=' year ',
values_to=' points ')
# A tibble: 8 x 3
player year points
1 A year1 12
2 A year2 22
3 B year1 15
4 B year2 29
5 C year1 19
6 C year2 18
7 D year1 19
8 D year2 12
year1とyear2 の列名が「year」という新しい列の値として使用され、それらの元の列の値が「points」という新しい列に配置されることに注意してください。
最終的には長いデータ フレームが生成されます。
注: pivot_longer()関数の完全なドキュメントはここで見つけることができます。
例 2: データをロングからワイドに再形成する
現在長い形式である次のデータ フレームが R にあるとします。
#create data frame
df <- data. frame (player=rep(c('A', 'B'), each= 4 ),
year=rep(c(1, 1, 2, 2), times= 2 ),
stat=rep(c('points', 'assists'), times= 4 ),
amount=c(14, 6, 18, 7, 22, 9, 38, 4))
#view data frame
df
player year stat amount
1 A 1 points 14
2 A 1 assists 6
3 A 2 points 18
4 A 2 assists 7
5 B 1 points 22
6 B 1 assists 9
7 B 2 points 38
8 B 2 assists 4
pivot_wider()関数を使用して、このデータ フレームをワイド形式に回転できます。
library (tidyr)
#pivot the data frame into a wide format
df %>% pivot_wider(names_from = stat, values_from = amount)
# A tibble: 4 x 4
player year points assists
1 A 1 14 6
2 A 2 18 7
3 B 1 22 9
4 B 2 38 4
これらの新しい列では、 stat列の値が列名として使用され、 amount列の値がセル値として使用されることに注意してください。
最終的には大きなデータ ブロックが生成されます。
注: pivot_wider()関数の完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。