jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

Rを利用したデータのまとめ方(1)

今回は、久しぶりにRの基本的な使い方について説明します。

データをまとめる方法

アンケート調査や実験などでデータを取得し、スプレッドシートなどになっているデータについて、色々な方法でまとめることができます。

変数の特徴を知る方法:summary関数で五数要約

五数要約とは最小、第一四分位、中央値、第三四分位、最大値のことで、この5つの数字をみることでおおよそのデータの位置と広がりを知ることができます。Rではこれに平均値を加えた6つの指標をsummary関数一つで計算可能です。

例えば以下のようなデータがあるときに

rawdata <-  c(1,2,3,4,5)

summary関数を使うと

summary(rawdata)

Min. 1st Qu. Median Mean 3rd Qu. Max.
1 2 3 3 4 5

という出力が得られます。左から順に最小値、第一四分位、中央値、平均値、第三四分位、最大値です。

ケースごとにまとめたいときにはapply関数

たくさんの人から取得したデータがあって項目ごとの得点があるとします。次のような場合です。


参加者 問題1 問題2 問題3
A 1 2 1
B 2 2 1
C 1 1 2

Rでこのデータを作るなら以下のように書けます。

rawdata2 <- data.frame(参加者= c("A", "B","C"), 問題1 = c(1,2,1), 問題2= c(2,2,1), 問題3= c(1,1,2))

ここで参加者全体の各問題の平均などを計算するのであれば上記で紹介しらsummary関数が役立ちます。では、個人ごとの合計得点を知りたい場合はどうすれば良いでしょうか。この場合はapply関数が役立ちそうです。

apply関数はケースごとに複数の変数のデータをまとめる計算をしてくれます。引数としてまとめたい変数とまとめ方を指定します。まとめ方については2つの要素があって、1つはまとめる方向です。MARGINという引数で1にすると行方向(ケース、参加者ごとでまとめる)、2にすると列方向(変数ごとでまとめる)に計算します。また、FUNという引数で計算方法を指定します。平均ならmean、標準偏差ならsd、合計ならsumです。
例として参加者ごとの合計得点をapply関数で計算してみましょう。

res <- apply(rawdata[,2:4], MARGIN = 1, FUN = sum)

resでは4,5,4
という出力結果が保存されています。これを元のデータフレームオブジェクトに含めることもできます。

rawdata2$total <- apply(rawdata[,2:4], MARGIN = 1, FUN = sum)

こうするとデータフレームにtotalという変数が増えて各参加者の合計得点がデータとして使用可能になります。まとめた後で、次の計算に使う場合には、このようなやり方が便利かもしれません。