DS JUNKSTAブログ

元文系院卒が独学で取り組むDS(データサイエンス)、その有象無象のアウトプット、DSは本当に楽しい

【RStudio/Mac】基本的な操作まとめ(ディレクトリの確認/ファイルの読み込み/値の抽出)

最近、『Rによるやさしい統計学』を読みながらR言語とRStudioに触れており、基本的なRStudioでのファイル読み込みやデータの抽出などでつまづいたいくつかの点をまとめる。
以下のコマンドはMac OS上でRStudioを操作する場合のものであることをご了承ください。


エラーメッセージの言語を英語にする

consoleで以下を実行

Sys.setenv(LANG="en")


せっかく日本語で表示されるのはいいのだけれど、出力されるエラーメッセージを検索するなら英語の方がGoogle検索しやすいので英語に設定する。
検索するほどRを使えていないのだけれど、今後のためにも。


現在のディレクトリの確認/作業ディレクトリの移動

RStudioではconsole上でディレクトリの移動ができる。
読み込むファイル(後述)のパスの書き方に関わるので、適切なディレクトリに移動する必要がある。

現在のディレクトリの確認
getwd()
# [1] "/Users/<username>"

get working directoryのことだと思われる。
linuxコマンドではpwdに該当する。

作業ディレクトリの移動
setwd("~/Desktop/Rによるやさしい統計学")

""のなかに絶対パスを記述。
linuxコマンドではcdに該当する。


ちなみに dir()関数 を使ったら、現在のディレクトリの中身を確認できる。

dir()
# 実行結果
[1] "shidouhouU8.csv"

csvファイルの読み込み

読み込みたいディレクトリに 移動してから、consoleで以下を実行

df <- read.csv('shidouhouU8.csv')

dfとだけ実行すると結果が表示される

df
# 実行結果
   SID   name sex math stat psych_test stat_test1 stat_test2 method
1    1   大村  男 嫌い 好き         13          6         10      C
2    2   本多  男 嫌い 好き         14         10         13      B
3    3   川崎  男 好き 好き          7          6          8      B
4    4   多村  男 好き 好き         12         10         15      A
5    5   松中  男 嫌い 嫌い         10          5          8      B
6    6 小久保  男 嫌い 嫌い          6          3          6      C
7    7   柴原  男 嫌い 嫌い          8          5          9      A
8    8   井手  男 嫌い 嫌い         15          9         10      D
9    9   田上  男 嫌い 嫌い          4          3          7      D
10  10   松田  男 好き 嫌い         14          3          3      D
11  11   高谷  女 好き 好き          9         11         18      A
12  12   杉内  女 嫌い 好き          6          6         14      A
13  13   和田  女 好き 好き         10         11         18      A
14  14   新垣  女 嫌い 嫌い         12          9         11      C
15  15   大隣  女 嫌い 好き          5          7         12      B
16  16   水田  女 好き 嫌い         12          5          5      D
17  17   斉藤  女 嫌い 嫌い          8          8          7      C
18  18   柳瀬  女 嫌い 嫌い          8          7         12      C
19  19   佐藤  女 嫌い 嫌い         12          7          7      B
20  20   馬原  女 嫌い 嫌い         15          9          7      D

読み込んだデータフレームから特定のカラムを抽出する

mathのカラムの値だけを取り出したい場合は以下を実行

> df$math
# 実行結果
 [1] "嫌い" "嫌い" "好き" "好き" "嫌い" "嫌い" "嫌い" "嫌い" "嫌い" "好き" "好き" "嫌い"
[13] "好き" "嫌い" "嫌い" "好き" "嫌い" "嫌い" "嫌い" "嫌い"

データフレームの変数と指定するカラム名の間に「$」をつける。
そのまま変数に格納することももちろん可能

> math <- df$math

読み込んだデータフレームのカラムごとにフィルターをかける

データフレームの中でsexカラムが「男」の行だけを抽出する場合は以下を実行

> df[df$sex=="男",]
# 実行結果
   SID   name sex math stat psych_test stat_test1 stat_test2 method
1    1   大村  男 嫌い 好き         13          6         10      C
2    2   本多  男 嫌い 好き         14         10         13      B
3    3   川崎  男 好き 好き          7          6          8      B
4    4   多村  男 好き 好き         12         10         15      A
5    5   松中  男 嫌い 嫌い         10          5          8      B
6    6 小久保  男 嫌い 嫌い          6          3          6      C
7    7   柴原  男 嫌い 嫌い          8          5          9      A
8    8   井手  男 嫌い 嫌い         15          9         10      D
9    9   田上  男 嫌い 嫌い          4          3          7      D
10  10   松田  男 好き 嫌い         14          3          3      D


「$」以外は基本的にPythonのpandasと同じような絞り込みが可能のようだが、「,」のつけ忘れに注意。


比較演算子を用いて特定の数値の絞り込みももちろん可能

> df[df$psych_test>10,] #psych_testが10より大きいデータフレームだけ抽出
# 実行結果
   SID name sex math stat psych_test stat_test1 stat_test2 method
1    1 大村  男 嫌い 好き         13          6         10      C
2    2 本多  男 嫌い 好き         14         10         13      B
4    4 多村  男 好き 好き         12         10         15      A
8    8 井手  男 嫌い 嫌い         15          9         10      D
10  10 松田  男 好き 嫌い         14          3          3      D
14  14 新垣  女 嫌い 嫌い         12          9         11      C
16  16 水田  女 好き 嫌い         12          5          5      D
19  19 佐藤  女 嫌い 嫌い         12          7          7      B
20  20 馬原  女 嫌い 嫌い         15          9          7      D


sexが男のstat_test1の列を抽出したい場合は以下の通り

> df[df$sex=="男",]$stat_test1
# 実行結果
 [1]  6 10  6 10  5  3  5  9  3  3