Rでデータ解析を始めよう011 apply関数のキホン的な使い方

Rでデータ解析を始めよう011 apply関数のキホン的な使い方

モモノキ&ナノネと一緒に統計ソフトRの使い方を学習していきます。

モモノキ&ナノネと一緒にR関数の使い方を練習しよう





行列データのまとめ処理に便利なapply関数のキホン的使い方

ナノネ、統計解析用フリーソフト『R』の使い方を練習するよ。今回はapply関数を使ってみよう。

モモノキ、apply関数はどういった処理ができるの?

apply関数は行列タイプのデータを行や列単位でまとめて処理ができる便利な関数だよ。

練習用のデータを適当に一つ準備して、apply関数のキホン操作を試してみよう。

In [17]:
# apply関数の練習用データ

X <- data.frame(
    A = c(1, 2, 3, 4, 5),
    B = c(6, 7, 8, 9, 10),
    C = c(11, 12, 13, 14, 15)
)

X
ABC
1 611
2 712
3 813
4 914
5 1015
In [18]:
class(X)
print(dim(X))
'data.frame'
[1] 5 3

練習データは5行3列のデータフレームだね。

apply関数はどうやって使うの?

apply関数は第1引数にデータ、第2引数に1(行)また2(列)、第3引数に関数を指定するよ。

第1引数のデータは行列またはデータフレームを指定。第2引数は行単位にまとめて処理するときは1、列単位で処理したいときは2を指定。第3引数は合計や平均など、まとめ処理を行う関数を指定するよ。

さっそくやってみよう。ナノネ、練習データの各行の平均値をapply関数で求めてみて。行で平均を計算したいから、第2引数は1、第3引数はmean関数を指定すればOKだよ。

In [19]:
row.means <- apply(X, 1, mean) # 行ごとの平均
print(row.means)
[1]  6  7  8  9 10

できた。各行の平均値が出力されたみたい。

apply関数で行方向(第2引数=1)を指定した場合の処理イメージはこんな感じだよ。

apply(X, 1, mean)

次は列平均を求めてみて。列で平均する場合は第2引数に2を指定すればOKだよ。

In [20]:
col.means <- apply(X, 2, mean) # 列ごとの平均
print(col.means)
 A  B  C 
 3  8 13 

各列の平均値が計算できた。

apply関数で列方向(第2引数=2)を指定した場合の処理イメージはこんな感じだよ。

apply(X, 2, mean)

apply関数の第3引数(処理関数)をsumに変えて、列の合計値を求めてみよう。

In [21]:
col.sum <- apply(X, 2, sum) # 列ごとの合計
print(col.sum)
 A  B  C 
15 40 65 

関数をsumに変更して、列合計もうまく計算できた。

applyに渡す関数を変更するだけだから、キホン上と一緒だね。

apply(X, 2, sum)

apply関数の第3引数は自作関数も使えるから試してみよう。自作関数は適当につくるとして、入力された値を10倍してその合計を返すことにしよう(練習なので関数の処理内容には特に意味ないよ)。

In [22]:
func1 <- function(data){
    return (sum(data * 10)) # 入力データ10倍の合計
}

col.func1 <- apply(X, 2, func1) # 列ごとに自作関数を適用
print(col.func1)
  A   B   C 
150 400 650 

自作関数を使う場合も、キホン一緒だよ。

apply(X, 2, func1)

自作関数を定義せずに、第3引数に関数を直接記載してもいいよ。

In [23]:
col.func1 <- apply(X, 2, function(x){sum(x * 10)})
print(col.func1)
  A   B   C 
150 400 650 

便利さの実感がまだイマイチだけど、apply関数が使いこなせるように練習してみるよ。

apply関数のキホン的な使い方練習は以上で。
またね!





スポンサーリンク

0 件のコメント :

コメントを投稿