先日は、
2/28日の記事
にて、CSVの作り方とR言語での使い方について書きました。
データの場合、バラツキを作りたいので乱数を使う事になりますが、オフィースソフトでも乱数をセルに配置できるので、先日はibreOfificeで乱数を散らしてデータを作りました。Calcには、
のような項目があり、選択すると、
のように指定した範囲にデータを散布できるのですが、これを使うと、
のように小数点数を配置できます。整数の場合、事前にプロパティで指定しておくと整数にできますが、事後にプロパティで小数点以下の桁数を減らしても同じ状態にできます。
桁数を減らすと、
のように整数に出来るのですが、先日は、データの取得についても触れましたが、R言語のデータの取得方法は、Pythonでリストを使った時のインデックスと似ているので、それを使うと、列単位のデータを取得する事ができます。その為、
のような取得が出来るのですあ、これを使うと、
のように取得したデータを使って
のようなコードを書いてグラフを作る事ができます。
今回は、扱えるデータと外部から読み込んだテキストファイルについて書こうかなと思います。
R言語は、データを用意してそれをグラフにして解析する事が出来るのですが、この時に、正規分布を乱数を使って生成して変数に格納した上でデータとして用意してグラフとして使用することもできますが、実際に収集したデータや計測値などを使って解析をする事もできます。
R 言語で外部ファイルを読み込む
R言語では、テキストファイルを参照できるのですが、データの形式としては、
■ テキストファイル
■ CSVファイル
を読み込むことができます。
外 部ファイルの読み込み
R言語では、オブジェクトに対してデータを入れる場合には記述の方法が決まっており、 【 <- 】 を使います。記述としては、
オブジェクト名 <- データ
と言う形になります。別の言語で変数の代入をするような感じで、データをオブジェクトに格納する事ができます。
単一のデータを格納する場合だと 【 a <- 1 】 のような感じになりますが、このデータの部分に読み込んだデータを適応する事になります。
R言語で外部ファイルを読み込む場合、 【 read 】 をつかって読み込む事になります。
■ ディレクトリ
どのプログラミング言語を使う場合もそうですが、外部ファイルを読み込む場合には、ファイルの場所を指定する必要があります。
その為、読み込むときには 【 パスの指定 】 をする事になります。
PCではフォルダーの階層が存在していて、その解層によってファイルが管理されています。PC購入直後はOSしか入っていないので、OSをインストールした直後の状態になって生かすから、ユーザーの作ったファイルは存在しませんが、用意されているアプリケーションも分類されてフォルダーに配置されています。このデータを管理する為の容れ物の事を 【 ディレクトリ 】 と言います。
■ ディレクトリ
データを分類・整理する容れ物
その為、ファイルを探す場合ディレクトリの指定をする事になりますが、これにファイル名まで含めた物が 【 パス 】 になります。
現在は、インターネットが当たり前に使用されている時代なので、パスについてもイメージしやすくなっていますが、学校のカリキュラムでもプログラミング教育が始まており、インターネットについても触れる機会があるので、こうした理解をもしやすくなっています。
コンピューターを使う場合、OS上でソフトウェアを動かしますが、この時にソフトエアとして存在している実行ファイルやデータもPCのストレージ内に存在します。作成したファイルを開く場合、データを探してそれを開くことになりますが、その時にフォルダーの海藻を指定しますが、これがディレクトリになります。
複数のPCを使う場合に相互でデータのやり取りが発生する場合にはLANを組みますが、これが外部のネットワークになった場合には、ISPなどで回線を契約してWANを使う事になります。インターネット回線がこのWANのネットワーク網になりますが、インターネットではサーバ内に用意されたコンテンツにアクセスをしているのですが、これは、グローバルIPが割り当てられているコンピューターにアクセスして使用している状態になります。この時の状態はIPアドレスなので、サイトの情報が解らないので、法人や個人がそのサーバ名が解りやすいように名前を付けて運用しているので、サイト名をアドレスから確認できるようになっています。これがドメイン名になりますが、そのままではドメイン名を判断できないので、DNSでドメイン名に変換して表示できるようになっています。
インターネットでは、ドメイン名でアクセスして、その中のディレクトリ内のファイルにアクセスすることでコンテンツを表示できるのですが、この時のページ内の記述をWEBブラウザでレンダリングをする事で、表示を行っています。
この時に 【 ページのアドレス 】 を指定しますが、この時に指定しているのが、 【 ファイルの宛先 】 になりますが、これが 【 パス 】 になります。
サイトにアクセスするときには 【 https://www.ドメイン名 】 でアクセスしますが、これが、サーバの位置なので、この中のディレクトリを指定する際には、この先頭部が必須となります。そして、その上で、ディレクトリ内のファイルにアクセスするので、ファイルのある海藻を指定してファイル名を指定する事になりますから、
■ サーバ
■ ディレクトリ
■ ファイル
の全てを指定する事になります。
この指定方法が 【 絶対パス指定 】 と言う物になりますが、個人がサーバを立ててアカウントを用意してコンテンツを作る場合、アカウント内でファイルの管理をするので、その場合には、ルートフォルダー直下にindex.htmlを用意してここを最上部としてこの下に海藻を構築しながらコンテンツの管理をする事になります。この場合、index.html以下でファイルが展開されるので、絶対パスのようなドメイン名の記述の必要はなく、対象のファイルから見た時の階層の差異だけで指定できるようになっています。この指定方法を 【 相対パス指定 】 になります。
この仕様はコンピューターのパスの設定方法なので、プログラミング言語によって記述も変わってきますが、 【 外部参照 】 をする場合には、必ず使用する物になります。
その為、R言語でのデータ参照をする場合でも 【 ディレクトリ 】 の指定をしてファイルを実行する事になります。
■ ディレクトリを扱う
まず、R言語をインストールする場合、通常のアプリケーションとは異なる場所にインストールされるので、インストール先を任意の場所に指定できるので、保存先のフォルダー内に 【 📁作業フォルダー 】 を作る事もできますが、別のドライブに作る事もできます。
ファイルを見込む場所の指定をする場合、どの言語もそうですが、
参照元のファイルの場所から見た参照するファイルの場所
の位置関係を指定する事になります。その為、ファイル構成としては、
📁 : 作業フォルダー
┃
┣ 📄 : コードを書いたファイル
┣ 📄 : データのファイル
のような形にすると、階層が同じなので、ファイル名の指定だけで対応できます。これが違う階層で作業フォルダー内だと相対パス指定で対応できますが、作業フォルダーの外にファイルがある場合には、絶対パス指定をする事になります。
ちなみに、R言語では、作業ディレクトリの場所はあらかじめ決め得られているので、コンソール側で、 【 getwd() 】 とすると作業ディテクトリがどこに指定されているのかを確認する事ができます。
学習用のファイルをダウンロードして使用する際に、作業ディレクトリにファイルを置いて学習する事になりますが、作業ディレクトリの指定がない場合だとこの場所を使う事になります。
模試も違う場所を対象にしたい場合だと、getではなくsetを使って指定する事になるので、 【 setwd("ディレクトリ名") 】 で指定する事になります。
テ キストファイルを読み込む
R言語でテキストを読み込む場合には、 【 read.table() 】 が用意されています。
■ read.table()
テキストファイルを読み込むときに使用します。
書 式
read.table(file, header = FALSE, setp = "" skip = 0)
のような形で記述します。
■ file
テキストが含まれるパスの指定
■ Header
読み込んだテキストファイルに列名(ヘッダー)が
含まれているか否かの指定をします。
・ TRUE : ヘッダーあり
・ FALSE : ヘッダーなし
■ seq
データの区切りを区別します。
・ "\t" : タブでの区切り
・ ” ” : スペースの区切り
・ ”|” : バーでの区切り
・ ” ;” : ;セミコロンでの区切り
・ ” :” : コロンでの区切り
・ ” ,” : カンマでの区切り
■ seq
データ上部のコメントなど読み込むが不要なデー
タを包含するか否かを指定します。
・ 0 : 包含する
・ 1 : 包含しない
この仕様に基づいて読み込むことになりますが、
C SVファイルを読み込む
CSVファイルは、オフィースソフトのスプレッドシートでも作れるので、データを読み込むとそのまま作る事ができます。ちなみに、オフィースソフトでのデータの読み込みですが、タブなどでデータ間を区切っておくと列が分離して、改行で行が分離した状態でインポートできるようになっています。
CSVファイル自体は、オフィースソフトでインポートとエクスポートができますが、Pythonを使ってファイルとして書き出す事もできるので、コードでNum.pyを使って読み込んで、それを書き出すときにCSVで出力する事もできますから、データ自体をオフィースソフトやPythonから持ってくることができます。
基本的に読み込みについてはreadで読み込むので、記述の設定はテキストファイル全く同じで、 【 read.cvs 】 で読み込むことになります。その為、
■ read.csv()
テキストファイルを読み込むときに使用します。
書 式
read.csv(file, header = FALSE, setp = "" skip = 0)
のような形で記述します。
■ file
テキストが含まれるパスの指定
■ Header
読み込んだテキストファイルに列名(ヘッダー)が
含まれているか否かの指定をします。
・ TRUE : ヘッダーあり
・ FALSE : ヘッダーなし
■ seq
データの区切りを区別します。
・ "\t" : タブでの区切り
・ ” ” : スペースの区切り
・ ”|” : バーでの区切り
・ ” ;” : ;セミコロンでの区切り
・ ” :” : コロンでの区切り
・ ” ,” : カンマでの区切り
■ seq
データ上部のコメントなど読み込むが不要なデー
タを包含するか否かを指定します。
・ 0 : 包含する
・ 1 : 包含しない
のような記述になります。read.table()もread.csv()も関数なので、()内に入っているのは関数を実行する為の引数になります。その為、引数で挙動を指定する事になりますが、基本的に対象が変わっているだけなので、引数自体は全く同じです。