全4970文字

4. 分布の確認

 要約統計量が確認できたら、分析を行ううえで目的変数(被説明変数)となる「売り上げ」や「価格」などの分布を確認するためにヒストグラム(histogram)を描きます。目的変数については本講座シリーズの過去記事を参照してください。

 ヒストグラムの描画には、「hist()」を使います。かっこ内にデータを表す変数「data」と、描画したい変数名「sales」を指定します。

「hist()」関数で売上(sales)のヒストグラムを描く
「hist()」関数で売上(sales)のヒストグラムを描く
[画像のクリックで拡大表示]

 「$」はデータの列名を指定する記号です。「breaks」という引数で、データを棒グラフとして表示する際の棒の本数を指定できます。他にも「plot()」関数を使えば、散布図や折れ線グラフを描くことができます。

「hist()」関数を使って、売上(sales)データをヒストグラムとして描画したところ
「hist()」関数を使って、売上(sales)データをヒストグラムとして描画したところ
[画像のクリックで拡大表示]

5. データの前処理

 前回解説したように、分析に入る前に欠かせないのが「データの前処理」です。

 前処理にはデータの結合や重複削除、欠損値処理などがあります。今回は重複しているデータがないか確認し、欠損値が含まれている行を除外しましょう。

 まずは重複しているデータの確認です。重複を調べたい列に対して「unique()」関数を適用すると、「重複していないデータ」だけを取り出せます。今回は「unique(data)」を用いて、データ全体から重複していない部分を探しています。重複しているデータはなかったので、「unique(data)」の結果として全ての行が表示されました(以下では全体の一部、1行目から8行目までを表示しています)。

「unique()」関数で「重複していないデータ」だけを取り出したところ。重複データはなかったので、すべての行が表示された(ここでは全体の一部、1行目から8行目までを表示)
「unique()」関数で「重複していないデータ」だけを取り出したところ。重複データはなかったので、すべての行が表示された(ここでは全体の一部、1行目から8行目までを表示)
[画像のクリックで拡大表示]

 また、「duplicated()」関数でデータの重複を確かめる方法もあります。データが重複していれば「TRUE」、重複していなければ「FALSE」を返す関数です。

 今回の例では重複しているデータはないので、「duplicated()」の結果は全部「FALSE」となります。以下を見ると、29行分、29個の「FALSE」が表示されているのが分かるでしょう。

「duplicated()」関数でデータの重複を確かめたところ
「duplicated()」関数でデータの重複を確かめたところ
[画像のクリックで拡大表示]

 続いて、欠損値を確認・除外しましょう。欠損値処理の方法はいろいろありますが、ここでは欠損値を除外します。「na.omit()」関数でかっこ内に除外したいデータの変数「data」を入力すれば、欠損値を除外できます。さらに、ここでは「<-」(矢印)を使って「data」変数に欠損値を除外済みのデータを代入し直します。その後で「dim(data)」を実行すると、欠損値が含まれていないデータは23行だと分かります。

「na.omit()」関数で欠損値を除外し、「<-」(矢印)を使って「data」変数に欠損値を除外済みのデータを代入し直した。「dim()」関数を実行すると、欠損値のないデータは23行と分かる
「na.omit()」関数で欠損値を除外し、「<-」(矢印)を使って「data」変数に欠損値を除外済みのデータを代入し直した。「dim()」関数を実行すると、欠損値のないデータは23行と分かる
[画像のクリックで拡大表示]

 ちなみに、データを結合する場合は「merge()」関数を使います。「id」などの変数名をキーとして、2つ以上のテーブル型のデータを結合します。