ウェブサイト検索

R melt() および cast() 関数 - R でのデータの再形成


こんにちは、読者の皆さん!この記事では、R プログラミングの重要な概念、つまり R のmelt() および cast() 関数を使用したデータの再形成について詳しく見ていきます。

R の Melt() および cast() 関数は、データ フレーム内のデータをカスタマイズされた形状に再形成するのに役立ちます。

Rのmelt()関数とcast()関数の操作

両方の機能を詳細に理解しましょう。どうぞ!

I. R メルト() 関数

R プログラミングの melt() 関数 は組み込み関数です。これにより、ユーザー定義の方法でデータ フレームを再形成および延長できます。データ値を長いデータ フレーム形式で編成します。

以下の構文を見てください!

構文:

melt(data-frame, na.rm = FALSE, value.name = “name”, id = 'columns')

NA 値が無視されないことを意味するデフォルト値として、na.rm=FALSE とともに、データ フレームを関数に再整形して渡します。

さらに、新しい変数/列名を value.name パラメータに渡して、関数から取得した細長い値を格納します。

ID パラメータは、再形成が行われるデータ フレームの列名に設定されます。

例:

この例では、ライブラリ「MASS、reshape2、および reshape」を使用します。データ フレームを作成したら、列 A と列 B に関してデータ フレームに Melt() 関数を適用します。

rm(list = ls())

install.packages("MASS") 
install.packages("reshape2") 
install.packages("reshape") 

library(MASS) 
library(reshape2) 
library(reshape) 

 
A <- c(1,2,3,4,2,3,4,1) 
B <- c(1,2,3,4,2,3,4,1) 
a <- c(10,20,30,40,50,60,70,80) 
b <- c(100,200,300,400,500,600,700,800) 
data <- data.frame(A,B,a,b) 

print("Original data frame:\n") 
print(data) 

melt_data <- melt(data, id = c("A","B")) 

print("Reshaped data frame:\n") 
print(melt_data) 
   

出力:

[1] "Original data frame:\n"
  A B  a   b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800

[1] "Reshaped data frame:\n"
> print(melt_data) 
   A B variable value
1  1 1        a    10
2  2 2        a    20
3  3 3        a    30
4  4 4        a    40
5  2 2        a    50
6  3 3        a    60
7  4 4        a    70
8  1 1        a    80
9  1 1        b   100
10 2 2        b   200
11 3 3        b   300
12 4 4        b   400
13 2 2        b   500
14 3 3        b   600
15 4 4        b   700
16 1 1        b   800

Ⅱ. R キャスト() 関数

上記のように、melt() 関数を適用した後、データ フレームは細長いデータ フレームに変換されます。データ フレームのほぼ元の自然な形状を取り戻すために、R cast() 関数が使用されます。

cast() 関数は、集約された関数と数式をパラメーターとして受け取り、(ここで、数式は、再形成後にデータが表現される方法です)、引き伸ばされた、または解体されたデータ フレームをキャストします。ほぼ集約された形式のデータ フレーム。

構文:

cast(data, formula, aggregate function)

キャスト()関数に、平均、合計などの利用可能な集計関数を提供できます。

例:

rm(list = ls())

library(MASS) 
library(reshape2) 
library(reshape) 

A <- c(1,2,3,4,2,3,4,1) 
B <- c(1,2,3,4,2,3,4,1) 
a <- c(10,20,30,40,50,60,70,80) 
b <- c(100,200,300,400,500,600,700,800) 
data <- data.frame(A,B,a,b) 

print("Original data frame:\n") 
print(data) 

melt_data <- melt(data, id = c("A")) 

print("Reshaped data frame after melting:\n") 
print(melt_data)

cast_data = cast(melt_data, A~variable, mean) 

print("Reshaped data frame after casting:\n") 
print(cast_data)

上記のように、cast() に集約関数として mean を渡し、表現の形式として A 変数に相当する変数を設定しました。

出力:

[1] "Original data frame:\n"
  A B  a   b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800

[1] "Reshaped data frame after melting:\n"
   A variable value
1  1        B     1
2  2        B     2
3  3        B     3
4  4        B     4
5  2        B     2
6  3        B     3
7  4        B     4
8  1        B     1
9  1        a    10
10 2        a    20
11 3        a    30
12 4        a    40
13 2        a    50
14 3        a    60
15 4        a    70
16 1        a    80
17 1        b   100
18 2        b   200
19 3        b   300
20 4        b   400
21 2        b   500
22 3        b   600
23 4        b   700
24 1        b   800

[1] "Reshaped data frame after casting:\n"
  A B  a   b
1 1 1 45 450
2 2 2 35 350
3 3 3 45 450
4 4 4 55 550

結論

以上で、このトピックは終了です。ご不明な点がございましたら、お気軽に以下にコメントしてください。

それまで、Happy Learning!! :)

参照:

  • https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/melt
  • https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/cast

関連記事: