準備
このセクションのゴール
今回使うパッケージを読み込むことができる。
カレントディレクトリを理解し、フォルダの中身を確認して目当てのCSVファイルを見つけられる。
必要なパッケージの読み込み
rではパッケージを追加することで様々な機能を追加することができます。
ここでは、データ操作が楽になるmagrittr
パッケージとtidyverse
パッケージを読み込みます。
まだパッケージをインストールしていないときは、install.packages("tidyverse")
をコンソールに入力してエンターを押すことでインストールできます。(tidyverseパッケージをインストールすると、magrittrパッケージも併せてインストールされます)
library(magrittr)
library(tidyverse)
フォルダの中身を確認する
list.files()
を使って、カレントディレクトリ(作業フォルダ)内にあるファイルを一覧を取得します。
list.files()
dataフォルダがあることが確認できます。
サブフォルダ内の中身を確認する
さらに深い階層のフォルダの中身を見るには、カレントディレクトリから見たパスを引数に追加します。
#dataフォルダの中身
list.files("data")
#dataフォルダの中のsubfolderの中身
list.files("data/subfolder")
作業フォルダの変更
setwd()
関数を使うと、カレントディレクトリ(作業フォルダ)を変更することができます。
getwd()
関数で現在の作業フォルダを確認できます。
#作業ディレクトリの変更
setwd("data")
#作業フォルダの確認
getwd()
## [1] "/srv/shiny-server/jspar/r-basics/data"
#再度中身を確認する
list.files()
## [1] "data_phyis.csv" "data_questionnaire.csv" "subfolder"
これで最低限の準備が整いました。続いてCSVファイルの読み込みに取り掛かりましょう。
CSVファイルの読み込み
このセクションのゴール
とりあえずCSVファイルが読み込める
CSVファイルの構造を確認できる
とりあえず読み込んでみる
CSVファイルを読み込む方法はいくつかありますが、ここではreadr
パッケージのread_csv()
関数を使います。
サンプルファイルはこちらです。
data_phyis.csv
csv_data
という変数に対して、CSVの中身を代入しましょう。
ここではデータファイル以外は指定しない(デフォルト設定)で読み込みます。
※ read_csv()
では返り値がデータフレームではなく、便利なtibbleというデータフレームの亜種になります。
csv_data <- read_csv("data/data_phyis.csv")
読み込んだデータを確認する
変数名(今回はcsv_data
)をコンソールに直打ちすると、変数の中身が表示されます。
足りない文字を入力してから実行してみましょう。
csv_da
先ほどのread_csv()
を実行した時のメッセージと今回の表示結果から、id, group, sex, age, condition1~3の合計7列(18行)のデータが読み込まれたことが分かります。
読み込んだデータの構造を確認する
str()
関数を使うと、データの構造(structure)が確認できます。
csv_data %>% str()
id
,age
, condition1~3
列が数値型(num)、group
とsex
列が文字型(char)となっています。
読み込んだデータを操作する
このセクションのゴール
表をsex, age順(降順)に並べ替えることができる。
group列をfactor型に変更できる。
新しい列(
over40
)を追加できる。
表を並べ替える
arrange()
関数を使うと、表を並べ替えることができます。
以下の例だと、年齢順に表を並べ替えています。
さらに、desc()
で列名をかこってやると、指定した列が降順になります。
#年齢順(昇順)
csv_data %>% arrange(age)
#年齢順 (降順)
csv_data %>% arrange(desc(age))
上のコードでは処理結果がコンソールに表示されるだけで変数には保存(代入)されないので、保存しておきます。
csv_data <- csv_data %>% arrange(age)
複数条件での並べ替え
arrange()
内で複数の列を指定すると、複数の列を基準に並べ替えることができます。
下の例では、男女内でさらに年齢(降順)で並べ変えています。
csv_data %>% arrange(sex, desc(age))
列の変数型を変える
mutate()
関数を使うと、表の既存の列を上書きしたり、表に新しい列を追加したりできます。
基本的な使い方: mutate(代入先の列名 = 代入するデータ)
上書き
代入先の列名に既に存在する列名を指定すると、既存の列が上書きされます。
sex
の表記を書き換える例
csv_data %>%
arrange(id) %>%
mutate(sex = case_when(sex == "f" ~ "female",
sex == "m" ~ "male"))
group
をfactor型に変更する例
csv_data <- csv_data %>%
mutate(group = as.factor(group))
csv_data
新しい列を作る
代入先の列名に表内に存在しない列名を指定すると、新しい列が末尾に追加されます。
csv_data <-
csv_data %>%
arrange(id) %>%
mutate(over40 = age > 40)
列を並べ替える
relocate()
関数を使うと、列の順番を並べ替えられます。
何も指定しなければ、引数に指定した列が先頭に来て、残りの列が元の順番で続きます。
csv_data %>%
relocate(age)
以下の例では、over40
列をage
列の後ろに配置しました。
csv_data %>%
mutate(over40 = age > 40) %>%
relocate(over40, .after = age)
ちなみに、mutate()
関数で新しい変数を作る際などにも.after
は指定できます。
final_data <- csv_data %>%
mutate(over40 = age > 40, .after = age)
final_data
CSVの書き出し
このセクションのゴール
- over40列を追加したtibbleを、csvに書き出してExcelで確認する。
Excel用CSVの保存
write_excel_csv(final_data, file = "data/final_data.csv")