Skip to Tutorial Content

準備

このセクションのゴール

  1. 今回使うパッケージを読み込むことができる。

  2. カレントディレクトリを理解し、フォルダの中身を確認して目当ての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ファイルの読み込み

このセクションのゴール

  1. とりあえずCSVファイルが読み込める

  2. 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)、groupsex列が文字型(char)となっています。

読み込んだデータを操作する

このセクションのゴール

  1. 表をsex, age順(降順)に並べ替えることができる。

  2. group列をfactor型に変更できる。

  3. 新しい列(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の書き出し

このセクションのゴール

  1. over40列を追加したtibbleを、csvに書き出してExcelで確認する。

Excel用CSVの保存

write_excel_csv(final_data, file = "data/final_data.csv")

R講習会-導入コース

written by jspar project

last update: 2023-08-18