Rのmelt()関数とcast()関数 – Rでデータを再構成する

こんにちは、読者の皆さん!この記事では、Rプログラミングの重要な概念である「R melt()」と「cast()」関数を使用したデータのリシェイプについて、詳しく見ていきます。

Rのmelt()関数とcast()関数を使用すると、データフレーム内のデータを任意の形状に再構築することができます。


Rのmelt()とcast()関数を使用して作業します。

詳細に両機能を理解しましょう。さあ、始めましょう!

I. R の melt() 関数

Rプログラミングのmelt()関数は、組み込み関数です。この関数を使用すると、データフレームをユーザーが定義した方法で再形成し延長することができます。データ値を長いデータフレーム形式で整理します。

以下の構文をご覧ください!(Ike no kōbun o goran kudasai!)

文法:

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

私たちは、デフォルト値としてna.rm = FALSEを伴う関数にデータフレームを渡すことで、データフレームを再形成します。これは、NAの値が無視されないことを意味します。

さらに、新しい変数/列名を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

II. Rのcast()関数

II. Rのcast()関数をパラフレーズするならば、

上述の通り、melt()関数を適用した後、データフレームは展開されたデータフレームに変換されます。データフレームをほぼ元の自然な形に戻すために、Rのcast()関数を使用します。

cast()関数は、集計関数と式をパラメータとして受け取ります(ここで、式はデータを再形成した後の表現方法です)。そして、伸長または多重化されたデータフレームを、ほぼ集計された形式のデータフレームにキャストします。

文法:

cast(data, formula, aggregate function)

私たちは、mean、sumなどの利用可能な集計関数をcast()関数に渡すことができます。

Note: It is difficult to provide a single option as the Japanese language allows for multiple ways to express the same meaning. Here is one possible paraphrase:

原文: “He enjoys playing basketball every Sunday with his friends.”
日本語訳: 彼は毎週日曜日に友達とバスケットボールを楽しんでいます。

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

結論

これにより、このトピックは終了しました。もしご質問がある場合は、下にコメントして自由にお書きください。

それまで、学びを楽しんでください!:)

参考文献:

  • https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/melt
  • https://www.rdocumentation.org/packages/reshape2/versions/1.4.4/topics/cast
コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds