R - データ変形:入門ガイド

こんにちは、未来のRプログラマーさんたち!今日は、Rにおけるデータ変形の世界に一緒に飛び込みます。プログラミングの経験がなくても心配しないでください。あなたの親切なガイドとして、私はここにいます。ステップバイステップで進めていきましょう。このチュートリアルの終わりには、プロのようにデータを変形できるようになるでしょう!

R - Data Reshaping

データ変形とは?

まず、データ変形とは実際に何を意味するのか話しましょう。レゴブロックがたくさんあるとします。データ変形は、そのブロックを並べ替えて違う構造を作るようなものです。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