R - データ変形:入門ガイド
こんにちは、未来のRプログラマーさんたち!今日は、Rにおけるデータ変形の世界に一緒に飛び込みます。プログラミングの経験がなくても心配しないでください。あなたの親切なガイドとして、私はここにいます。ステップバイステップで進めていきましょう。このチュートリアルの終わりには、プロのようにデータを変形できるようになるでしょう!
データ変形とは?
まず、データ変形とは実際に何を意味するのか話しましょう。レゴブロックがたくさんあるとします。データ変形は、そのブロックを並べ替えて違う構造を作るようなものです。Rでは、私たちはデータを同じように再編成して、分析により役立つようにしています。
では、実際の例で試してみましょう!
データフレームの列と行の結合
列の追加
まず簡単なところから始めましょう。果物に関する情報があるデータフレームを考えてみましょう:
fruits <- data.frame(
name = c("りんご", "バナナ", "チェリー"),
color = c("赤", "黄色", "赤")
)
print(fruits)
これは以下のように出力されます:
name color
1 りんご 赤
2 バナナ 黄色
3 チェリー 赤
さて、果物の価格に関する新しい列を追加してみましょう:
fruits$price <- c(0.5, 0.3, 0.7)
print(fruits)
すると、新しい列が追加されます:
name color price
1 りんご 赤 0.5
2 バナナ 黄色 0.3
3 チェリー 赤 0.7
行の追加
新しい果物をリストに追加したい場合はどうしますか?もちろん、それもできます!
new_fruit <- data.frame(name = "デーツ", color = "茶色", price = 0.6)
fruits <- rbind(fruits, new_fruit)
print(fruits)
すると以下のようになります:
name color price
1 りんご 赤 0.5
2 バナナ 黄色 0.3
3 チェリー 赤 0.7
4 デーツ 茶色 0.6
データフレームの結合
次に、別のデータフレームに栄養情報があるとします:
nutrition <- data.frame(
name = c("りんご", "バナナ", "チェリー", "デーツ"),
calories = c(52, 89, 50, 282)
)
# 2つのデータフレームを結合
fruit_info <- merge(fruits, nutrition, by = "name")
print(fruit_info)
すると以下のようになります:
name color price calories
1 りんご 赤 0.5 52
2 バナナ 黄色 0.3 89
3 チェリー 赤 0.7 50
4 デーツ 茶色 0.6 282
素晴らしいですね!2つの異なる情報源からデータを1つの包括的なデータフレームに結合しました!
メルティングとキャスティング
さらに高度な変形技術に進みましょう。ここではreshape2
パッケージを使用しますので、インストールしてロードしてください:
install.packages("reshape2")
library(reshape2)
データのメルティング
データのメルティングは、氷の塊が溶けるようなものです。すべてが流動的になり、再形できるようになります。まずはfruit_info
データをメルトしてみましょう:
melted_fruits <- melt(fruit_info, id.vars = "name")
print(melted_fruits)
すると以下のようになります:
name variable value
1 りんご color 赤
2 バナナ color 黄色
3 チェリー color 赤
4 デーツ color 茶色
5 りんご price 0.50
6 バナナ price 0.30
7 チェリー price 0.70
8 デーツ price 0.60
9 りんご calories 52.00
10 バナナ calories 89.00
11 チェリー calories 50.00
12 デーツ calories 282.00
見てみると、各属性(色、価格、カロリー)が別々の行になりました。これは特定の分析や可視化に非常に役立ちます。
熔けたデータのキャスティング
データをメルトした後は、新しい形に再キャストすることができます。例えば、果物を列にして属性を行にしたくしたい場合はどうしますか?
casted_fruits <- dcast(melted_fruits, variable ~ name)
print(casted_fruits)
すると以下のようになります:
variable りんご バナナ チェリー デーツ
1 color 赤 黄色 赤 茶色
2 price 0.50 0.30 0.70 0.60
3 calories 52.00 89.00 50.00 282.00
すごいですね!データ構造を完全に変換しました!
終章
おめでとうございます!Rにおけるデータ変形の世界への最初の一歩を踏み出しました。レゴブロックで遊ぶように、自分のニーズに最適な構造を見つけることが鍵です。これらの関数で遊んでみましょう。それで本当に学ぶことができます!
以下は、私たちがカバーした方法の簡単な参照表です:
メソッド | 関数 | 目的 |
---|---|---|
列の追加 |
$ または cbind()
|
データフレームに新しい変数を追加 |
行の追加 | rbind() |
データフレームに新しい観測値を追加 |
結合 | merge() |
別のデータフレームからデータを結合 |
メルティング | melt() |
幅の広いデータを長い形式に変換 |
キャスティング | dcast() |
長いデータを幅の広い形式に変換 |
続けて練習してください。すぐにデータをマスターするスカルプターのようにデータを変形できるようになるでしょう!ハッピーコーディング!
Credits: Image by storyset