先日は、
■ R言語を使う : インストール ~ 簡単な操作【 プログラミング 】
にて、R言語のインストールと簡単な使い方について書きました。
今回は、扱えるデータと外部から読み込んだCSVファイルについて書こうかなと思います。
R言語は、データを用意してそれをグラフにして解析する事が出来るのですが、この時に、正規分布を乱数を使って生成して変数に格納した上でデータとして用意してグラフとして使用することもできますが、実際に収集したデータや計測値などを使って解析をする事もできます。
R 言語でCSVを読み込む
R言語では、CSVを読み込めるのですが、このファイルは、テキストファイルでデータが【,】で区切られた形になっています。その為、この形式で保存すると手キスとして読み込めるのですが、オフィースソフトでの読み書きが出来る仕様になっています。R言語ではCSVファイルを読み込んで使用できるので、外部データを参照して解析を行う事ができます。
C SVファイルを作る
先日も紹介しましたが、R言語自体は無償で使用できるのですが、スプレッドシートと言うと優勝のオフィースソフトと言うイメージがあるかもしれません。Linuxを使っているユーザーだとそうしたイメージは少ないと思いますが、OSSのオフィースソフトを使うとスプレッドシートも無償で作る事ができます。
OSSのオフィースソフトには、
■ LibreOffice
があるので、このソフトを使うと、CSVファイルも簡単に作れます。
LibreOfficeをインストールすると、
のように必要な物はほぼ揃ってしまうのですが、BASEだけは、そのままでは使えないので、JAVAのランタイムのJREをインストールする必要があります。JREと言うと、マイクラのJAVA版で必須となりますが、このプログラミング言語自体がJAVA VMと言う仮想マシン用のバイトコードと命令セットで動いているので、JREの引数の指定で、VMの小の設定が出来るようになっています。その為、PCのスペックを高くしておいて、VMの性能を調整してパフォーマンスを変更できると言う面白い作りになっています。BASEはリレーショナルデータベースなので、データベースとクエリーを作って管理できるだけでなく、フォームを使ったフロントエンドの作成や、帳票出力用のレイアウトの指定(差し込み印刷用の指定もできます)などもできる仕様になっています。
それ以外の機能はJREなしで動くのでインストール直後から使用できるようになっています。今回はスプレッドシートでデータを作るので
のようにメニューからCalcを選択します。ソフトを立ち上げると、
のような画面になりますから、
のような感じで票を作りデータを追加します。データについては手入力をしてもいいのですが、R言語で使うデータの場合量が多いほうがいいと思ので、巨大な表をつkル事になりますが、ただの乱数を手入力するのも大変ですから、セルに乱数を挿入する事にします。
LibreOfficeでは、正規分布の選択した範囲のセル内に挿入する機能が用意されています。乱数を挿入するセルの範囲を指定した後に、メニューの 【 シート 】 を開くと、
のようにメニューが出るので、この中から、
のように 【 セルのフィル 】 → 【 乱数で埋める 】 を選択します。すると、
のようなダイアログが出るので、必要な範囲と分布の方法などを指定します。適応すると、
のように乱数が追加されますが、プロパティの状態が優先されるので、
のように指定しても小数点第1位まで入ってしまいます。そこで、
のプロパティで小数点以下の桁数を調整する事で整数にする事が出来ます。
LibreOfficeでは、
のような形式で保存が出来るのですが、HTMLやXMLなどでも出力が出来るようになっていますが、今回は、
で保存する事になります。今回は、項目1で固定されていたので、どんな感じで保存されるのかを確認してみると、
のようになっていました。データとしては、こんな感じになっていますが、Rで読み込むと面白い事が発生します。ただし、通常の作業だとこうした項目名が重複しないようにする必要があります。
R 言語を開く
R言語のRGuiを立ち上げると、
のようなコンソールが出ているのですが、コードはエディタで記述するので、エディタを開くことになります。まず、
のように 【 ファイル 】 → 【 新しいスクリプト 】 を選択すると、
のようにエディタが立ち上がりますが、この状態だと作業がしずらいので画面内に整列させることにします。レイアウトの指定はウインドウで行いますが、
のように横に並べて表示にすると、なぜか
のように縦に並び、
のように縦に並べて表示を選択すると、
のようになります。コードや表示は縦長になるので、この状態にしたほうが作業がしやすいので、この表示を使う事にします。ちなみに、コンソールとエディタでは表示されるメニューが異なり、
■ コンソール
■ エディタ
のような違いがあます。
環 環境設定
作業を始める前に、ファイルを読み込む場所の指定をするk十になりますが、これは、メニューから行えるので、
のように 【 ファイル 】 → 【 ディレクトリの変更 】 を選択して、CSVファイルの保存先のフォルダーを指定しておきます。
これで、📁直下のCSVファイルを読み込むときにファイルめーだけで呼び出せるようになりました。
C SVファイルを読み込む
エディタを選択して、
のようにコードを書きます。コードの実行は、
のように実行した偉業を選択して、上のアイコンの
を選択します。ちなみに、ファイル名が間違っていると、
のようなエラーが出ますが、
のように適正なファイル名を指定すると、
のようにCSVファイルを開くことができます。ファイルがあるのに開けない場合もありますが、この場合、 【 2バイト文字が影響している 】 場合があるので、ファイルをコピーして半角英数字の別の名前のファイルにして読み込むと開くことができます。
その為、そうしたた問題が出ないようにするために、ファイル名は半角英数字にしておいた良さそうです。
デ ータの代入
R言語と言うと代入をする際の記号が特殊ですが、オブジェクトに対してデータを代入する場合、
のような記号を使います。これを行うと dat と言う名称のオブジェクトに対して読み込んだCSVファイルの内容を代入する事ができます。
考え方は変数と同じなので、
のようにdatに記録された物をdatで呼び出すと、
のようにdatでデータの呼び出しが出来るようになります。
デ ータの呼び出し
CSVの読み込みは、上記のようにファイル名だけでも行えますが、このデータを関数で呼び出す事が出来ます。今回はその中の
を紹介しようかなと思います。
■ head()
head()関数は、データの上位6行を表示する物になっているので、どう言ったデータなのかを見る時に項目と値で確認する事ができます。
引数の中にデータを入れると反映されるので、datにCSVファイルの内容を格納している場合、datを引数に入れると反映されます。この辺りは、プログラミング言語の関数と全く同じですから、他の言語だと
■ 変数にデータを代入
■ 関数の宣言
■ 関数の引数に変数を代入
と言う流れと全く同じ処理でこの関数が実行されます。
のようなコードを書いて実行すると、
のように上位6つのデータが表示されます。
■ dim()
dim()関数は、データの行数と列数が返ってくる関数になります。
のようなコードを実行してみると、
のように10行で4列ある事が確認できます。
■ colnames()
これは、データの変数名を出力します。
のようなコードを書いて実行してみると、
のように項目の変数名が表示されます。
■ str()
データの型を知る事ができます。
のようなコードを書いて実行すると、データが横に表示され、そのデータの型が表示されます。
これを見ると、フレームの縦と横の数が表示され、変数名とその変数内のデータの型が表示されます。
CSVを読み込んだ場合、二値の判定もintになるので、数値として判断されるようです。
デ ータの抽出
データの読み込みだけでなく抽出もできるのですが、Pythonでリストを使った時のインデックスの制御と同じような記述で制御できるようになっています。
■ 特定のデータの抽出
特定のデータを得たい場合には、
データ[行番号, 列番号]
という形で取得ができます。この形は、Pythonでリスト内のデータをインデックスを使って取得するのに似ていますが、
のようにdatを表示してdat内のデータを取得するコードを書いて実行してみると、
のようになっています。これで、
【 2行目の3列 】
【 3行目の4列 】
のデータを見てみると、一致しているので指定したデータの取得が出来ている事が確認できます。
■ 列のデータの抽出
前述の方法は、Pythonでインデックスを使う方法に似ていますが、Pythondではインデックスを使った場合、
■ データ[行番号, 列番号]
■ データ[, 列番号]
■ データ[行番号, ]
と言う指定ができます。これを行うと、列全体や行全体を取得できるようになっています。Rの場合も同じ指定ができますが、縦方向にデータが並んでいるので一つの項目のデータを取得しようと思うと、
データ[, 列番号]
と言う記述で取得できるので、
のようなコードを書いて実行すると、
のようにデータの取得ができます。これとは別の方法で、
データ名$変数名
という形で実行する事もできます。
のようなコードを書くと、
のように各データの抽出ができます。
今 回のCSVの作業の流れ
CSVファイルを作るのにオフィースソフトを使いますが、IDのように数値が増えていくだけの物の場合、手入力をする必要はありません。
のようにセルに数値を入れたあとに数値を増やす場合、セルの端の■の部分をクリックして下方向にドラッグすると、
のように数値が増えます。これは、横方向も同じで、
のように項目の後に数値を入れておいて横方向に同じ操作を行うと、
のように数値が増えます。疑似乱数の指定は、
のように選択して乱数を適応するだけで終わります。
これをCSVで保存して、
のように読み込むと、
のようにデータの取得ができます。当然、このデータは取得後二階席が出来るので、
のように列を取得してグラフにするコードを書くと、
のようにデータを取得してグラフにする事が出来ます。一つのグラフに複数のデータを追加することもできますから、複数の折れ線グラフで状態を見る事もできますし、R言語だと簡単な記述で箱ひげ図とかも作れますから、中学校で使うデータの活用や乱数表などのカリキュラムの資料作りでも利用する事ができます。
グラフの書き方は触れていませんが、Pythonのmatplotlibと同じレベルで簡単にデータからグラフが作れるので、グラフを作るだけで使用してもかなり使いやすいツールになっています。