準備
サンプルデータで練習してみましょう。まずは下のエクセルファイル(csvファイル) set01 をPCにダウンロード。
ファイルの読み込みは、最初の難関です。慣れるまではStep1~Step6をコピペして実行されることをお薦めします。特にstep6のパッケージのダウンロード先も指定しておいた方が後々便利です。
フォルダの指定とcsvファイルの読み込み
Step1: Rのリセット
以下のコードをRにコピペすると、Rがリセットされます。残っている全てのオブジェクト(ベクトル、リストなど)を削除します。
rm(list = ls(all.names = TRUE))
Step2: 作業するフォルダの指定(Rでは作業ディレクトリと言います)
作業ディレクトリとして「yoshidaのデスクトップの練習用のフォルダ」を指定する方法
setwd("C:/Users/yoshida/Desktop/練習用")
R3.2.0より以前のバージョンでは バックスラッシュを2回(¥が2つ)書かなければなりません。
setwd("C:\\Users\\yoshida\\Desktop\\練習用")
Step3: 作業するフォルダの確認
以下の関数でstep2で指定したフォルダの場所を確認することができます。step2の例のように設定したら、“C:\Users\yoshida\Desktop\練習用”と出力されます。
getwd()
デスクトップを作業フォルダに設定している場合には、以下のように表示されます
Step4: CSVファイルの読み込み
重要)Step2 で指定したフォルダの中に、サンプルデータ set1 を入れてください
以下のコードをコピペしたら、ダウンロードした set01 をdatの中に格納することができます
dat <- read.csv("set01.csv", header = T, fileEncoding = "UTF-8")
重要)うまくいかない場合は、以下に変更してください
fileEncoding = "Shift-JIS"
文字エンコーディングの規格は、UTF-8が世界標準になってきてるようです。UTF-8 と Shift-JIS の規格の違いについては、ネット検索またはChatGPT様に尋ねてみてください。
プロンプト
read.csvとread_csvの違いを教えてください
read.csv(utilsパッケージ)
Rの標準パッケージでutilsから提供。文字列はfactor型として読み込まれる(stringsAsFactors = TRUEがデフォルト設定であったが、R 4.0.0以降はstringsAsFactors = FALSEがデフォルトとなる)。区切り文字はカンマ(,)がデフォルト。ファイルのエンコーディングを指定は、fileEncoding。ヘッダー行があることを仮定(header = TRUEがデフォルト)。
read_csv(readrパッケージ)
read_csvはreadrパッケージに属する。tidyverseに含まれる。read_csvはデフォルトで文字列を文字列のまま読み込む(stringsAsFactorsオプションなし)。通常、read_csvの方がread.csvよりも読み込みが速いとされている。ファイルのエンコーディングはlocaleの引数を通じて設定。ヘッダー行があると仮定しますが、より多くの現代的なデータ処理機能を持っている。
AIに依頼したら、直接貼り付けたエクセルのデータをベクトルに直してくれます。
プロンプト
以下のデータを、データテーブルとして Rに取り込みたい
ID 年齢 筋トレ 歩行練習 効果
1 65 あり あり 有効
2 66 あり あり 有効
3 69 あり あり 有効
4 64 あり あり 有効
5 64 あり あり 有効
# データをベクトルとして定義
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
年齢 = c(65, 66, 69, 64, 64),
筋トレ = c("あり", "あり", "あり", "あり", "あり"),
歩行練習 = c("あり", "あり", "あり", "あり", "あり"),
効果 = c("有効", "有効", "有効", "有効", "有効")
)
# データフレームを表示
print(data)
Step5: CSVファイルが読み込まれたことを確認
以下のコードで set01 が格納されている dat の先頭の6行が表示されます
View(dat)
CSVファイルの先頭5行が表示されれば成功です
Step6: パッケージのダウンロード先の指定
パッケージをインストールして保管するフォルダを作成します。これから多くのパッケージをインストールすることになるので、同じフォルダに入るように指定しておきます。Rを更新したときも同じ場所から起動することができます。例えば・・・「yoshidaのドキュメントのパッケージ用」であれば、、、
.libPaths("C:/Users/yoshida/Documents/パッケージ用")
R3.2.0より以前のバージョンでは バックスラッシュを2回(¥が2つ)書かなければなりません。
単変量解析
年齢のヒストグラムを作成
hist(dat$年齢)
むむ…偏ってる
対数変換したヒストグラムを作成
hist(log(dat$年齢))
検定したら正規分布になっていないかもしれませんが、最終的にどのような解析で使用するかで変数の変換が必要になります。次のように2値に変換する場合もあります。
set に 年齢c という変数を追加します。年齢c に条件を付けて2値にします:「年齢65歳未満を0、65歳以上を1」と記載します。
dat$年齢c <- ifelse(
dat$年齢>65, 0, 1
)
datをみたら、年齢cという列が追加されており、「年齢65歳未満を0、65歳以上を1」のルールに従って2値変数になっています。
View(dat)
年齢65歳未満と65歳以上の人数はどうなっているでしょうか?
table(dat$年齢c)
年齢65歳未満は 18名、65歳以上は 12名 でした!
作業終了時のポイント
例)サクラエディタに記録したプログラム
テキストエディタに記載したプログラムは同じ作業フォルダに保存しましょう。分かりやすいように同じ名前にします・・・”統計学習01″.
この状態で保存成功したら、「作業スペースを保存しますか?」という問いには「いいえ」で大丈夫です
また作業したい場合
エディタに記載したプログラムをRにペーストするだけで再開できます。ディレクトリ指定、パッケージ保管場所の指定、CSVファイルの読み込みが一瞬でやれます!!!
これができるようになったらエディタのみ保管しておけばOK Rが入っているPCであればいつでもどこでも作業再開OK
職場と自宅の2台のPCを使用している場合
PCの名称が同じであればここの設定は不要です。作業する場所は、デスクトップを想定してます。PCの名称が異なる場合以下のように2種類のディレクトリを作成します。場所やファイルを指定する場合には ¥¥ が必要です(¥が2つ必要です!)。それぞれのPCのパスを記載して、いつでもどこでも書けるように、USBやクラウドなどに保存しておくと便利です。
#職場のPCを使う場合
setwd("C:/Users/職場PC名 /Desktop/職場のフォルダ")
#自宅のPCを使う場合
setwd("C:/Users/自宅PC名 /Desktop/自宅のフォルダ")
セットされたか確認します。繰り返しになりますが、必ず確認してください。
getwd()
エラーが出なければセット完了です。自宅のフォルダにcsvファイルを入れてRで読み込みます。
dat <- read.csv("set01.csv", header=T, fileEncoding = "UTF-8")
作業フォルダの変更(作業ディレクトリの変更)
作業フォルダを変更する練習です。練習用フォルダから統計学習01フォルダに変更します。基本的には、1つの作業(解析)につき1つのフォルダを作成します。新しい作業を行う場合には、新規フォルダ(統計学習01)を作成して、作業フォルダを再度指定します。
例)デスクトップに”統計学習01″というフォルダを作成
準備の「Step2」を実行します。統計学習01フォルダを作業フォルダに指定します。
setwd("C:/Users/○○○/Desktop/統計学習01")
getwd()
以下のように出力されたら成功です
これで作業フォルダがデスクトップの 統計学習01 に変更しました
* 入力時には¥¥ですが、 出力画面はスラッシュ1つ(/)になります
ここまで、いかがだったでしょうか? ここまでの作業はとても重要です。上記のような出力がない場合は、必ず再トライしてみてください。また、今回は使いませんが、毎回作業するごとに準備 step6 のパッケージの保管場所も指定してください。
.libPaths("C:/Users/○○○/Desktop/Rpackages")
ここまでできたら、Rに読み込み
ファイルの読み込み
ダウンロードした “set01.csv” を、新たに作成したフォルダ “統計学習01” に入れてください
重要)必ず指定した作業フォルダに入れてください
新しいフォルダ「統計学習01」にある “set01.csv” をRに読み込みます。今度は set という名称にしておきます。
set <- read.csv("set01.csv",header=T, fileEncoding = "UTF-8")
これで set という3文字の中に “set01.csv” が読み込まれます(dat以外の文字でも問題ありませんが、Rの関数と同じ文字はエラーになります)。set の中身を確認してみましょう。dim関数は行数と列数を表示して、head関数は先頭から5行を表示します。
#行数と列数を表示
dim(set)
#先頭から6行目までを表示
head(set)
このように表示されていれば成功です
コメント欄 『間違い』や『分かりにくい部分』などのご意見もお寄せください