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