R言語

【R言語】データフレーム操作 作成・値の代入・行と列の追加と削除など

  1. HOME >
  2. R言語 >

【R言語】データフレーム操作 作成・値の代入・行と列の追加と削除など

スポンサーリンク

統計学初学者向けの教材です
¥2,970 (2022/06/01 17:41時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場

データフレームの転置(行と列を反転)

データフレームを転置(行と列を反転)したいときは、関数tを使います。次のように関数tの引数に反転したいデータフレームを指定することで、データフレームの転置ができます。

転置する前のデータフレームの列の型が異なる場合、転置後のデータフレームの型が上のように変わってしまうのに注意する必要があります。

欠測値の処理

データフレームに欠測値NAがあり、NAを除去したいときは、関数na.omitを使います。引数にデータフレームを入れて実行すると、NAが1つでもある行を全て除外することができます。

データフレームの合計・割合・平均・分散

データフレームの行や列ごとの合計や割合、平均、分散を求める例を紹介します。

次の5つのnumeric型の変数をもつデータフレームを例に合計・割合・平均・分散を求めていきます。

合計

データフレームなどの行列の行と列の合計を求めるには関数rowSumsとcolSumsを使います。各行または各列の合計を計算することが可能です。

割合

次に、データフレームの各行または各列の割合を求める方法を紹介します。関数sumデータフレームの合計で使った関数rowSumscolSumsを用いることで、次のように各行と各列の割合を計算することができます。

平均

各行、各列の平均は関数rowMeansとcolMeansで計算できます。以下、実行例です。

また、applyを用いることでデータフレームの各行、または各列に関数を適用することできます。次のようにデータフレームにapplyを適用することで平均を求めることもできます。

分散

分散を求めるには上のデータフレームの平均の一番下で用いた関数applyを使います。applyの引数functionに関数varを指定することで、各行と各列の分散を求めることが可能です。

まとめ

最後に、計算した合計・割合・平均・分散を一つのデータフレームにまとめる例を紹介します。次のように関数rbindcbindで各行と列の合計や割合などを結合させることで、集計表を作成することができます。

¥3,509 (2022/06/11 02:16時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
¥4,036 (2022/06/11 02:41時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場

カテゴリカルデータ・ピボットテーブルの作成

カテゴリカルデータのデータセットを解析する際に、ピボットテーブル(クロス集計表)を作成することが多いです。データフレームからピボットテーブルを作成するには、関数xtabsを用います。次のように、引数dataにデータフレームを指定し、引数formulaに~ + 列名1 + 列名2 + . . . + 列名cを指定することで、ピボットテーブルを作ることができます。

また、df6のtrueとpredictとtypeに関する3元集計表は次のようになります。

データフレームのファイルへの保存

最後に、データフレームのファイルへの保存方法について紹介します。

txtファイルへの保存

txtファイルへ保存するには、関数write.tableを用います。write.tableはデフォルトで引数quoteがTRUEであり、character型などの要素にダブルクオーテーション""が付いてしまいます。次のよう引数quote = FALSEを設定することで、""を付けずに保存することが可能です。

上を実行すると次の画像のtxtファイルが保存されます。

データフレームの保存txtファイル

csvファイルへの保存

csvファイルへデータフレームを出力する場合は、専用のwrite.csvを使いましょう。実行すると下の画像のcsvファイルが作業ディレクトリ内に保存されます。

データフレームの保存csvファイル

まとめ

データフレームの操作について解説しました。

R言語はベクトルや行列単位での演算に特化しているので、値を参照したり変更したりする際は行や列などのベクトル単位で行ってあげるのがポイントです。ひとつずつデータを変更すると膨大な時間がかかってしまうので、注意が必要です。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-,