第3回:プロジェクトの整理とデータの読み込み

https://data-science-chiba-2024.github.io/day3/

連絡事項

  • 第2回の宿題の締め切りを10月25日(金曜日) 23:59まで延長しました

クイズ

注意: 質問は複数選択です。すべての正しい答えを選んでください。

または、gosocrative.com で joho2024を入力

今後の宿題について

  • 宿題はこれまで通りオンラインで受けることも可能です。
    • 混雑している時間帯には接続できない可能性があります。
    • しばらく使用しないとリセットされてしまいます。

今後の宿題について

  • オンラインで受けてきた宿題はRパッケージjoholearnr」でもあります

  • 教室内のパソコンに宿題がインストールされているので、ここで受けることも可能になりました:

    • 右上の「環境」パネルで「Tutorial」タブをクリック(1)
    • 受けたい宿題を探します(2)
    • 「Start Tutorial」をクリックするとブラウザ内でチュートリアルが始まります(3)
  • チュートリアルが終わったら(完成コードを提出したら)、「Stop」ボタンをクリックしてください。
  • 注意:完成コードを提出する前に「Stop」ボタンをクリックすると、今までの答えが消去されるので気をつけてください。
  • リストに今週の宿題が表示されていない場合は、パッケージのアップデート(再インストール)が必要です。
    • 以下のようにインストールを行ってください:
install.packages(
  "joholearnr",
  repos = c("https://joelnitta.r-universe.dev", "https://cloud.r-project.org")
)
  • コードが長いので、コピーペーストがおすすめです。
    • 上のテキストの上にマウスを置くと、その右上に小さなクリップボードのアイコンが出ます。アイコンをクリックするとコードがコピーされます。
  • もし以下のメッセージが表示されたら:
These packages have more recent versions available.
It is recommended to update all of them
Which would you like to update?

3を押してからエンターキーを押してください(他のパッケージをアップデートしない)。

  • install()を実行したら、一旦RStudioを閉じてから再度開いてください。そうすると、新しいチュートリアル(宿題)が表示されます。

アウトライン

  • プロジェクトの整理とデータの読み込み
    • ファイルとフォルダー
    • データフレーム
    • スクリプト
    • プロジェクトの作成

RStudioの設定の変更

  • 再現性を担保するために、RStudioの設定を変更する必要があります。

  • そうしないと、予想外の(自分が書いたコードに依存しない)結果が得られます。

  • 「Tools」→「Global Options」→「Workspace」

    • 「Restore .RData into workspace at startup」→ 外す
    • 「Save workspace to .RData on exit」→ 「Never」

データフレームについて

  • データフレームは最もよく使われるデータ形式です。
    • 行と列から構成される2次元データ(表形式データ)
    • エクセルのスプレッドシートと同じようなもの

データフレームについて

  • エクセルとの大きな違い:各列は同じデータ型を持たなければなりません。
    • つまり、各列がベクトルであるということです。
  • tidyverseでは、「tibble」と呼ばれます。

初データの読み込み

  • 練習として、教科書に掲載されているstudents.csvファイルをRに読み込みます。

  • まず、このリンクからstudents.csvデスクトップにダウンロードしてください:

.csvファイルについて

  • .csvは、Comma-separated valuesの略です。
    • データはコンマ(,)で区切られています。
  • エクセルの.xlsxファイルとの違い
    • .csvの中身は単純な文字列なので、直接中身を確認することができます。
    • .xlsx(または.xls)ファイルはエクセルのみに対応しています。
    • .xlsxはエクセルを持っていない方にとって使いにくいので、.csvを推奨します。

.csvファイルをRに読み込む

  • これから使用する関数はtidyverseパッケージに含まれているので、まずはtidyverseをロードしましょう。
library(tidyverse)
  • .csvファイルを読み込む関数はread_csv()です。
students <- read_csv("Z:/Desktop/students.csv")
students
# A tibble: 6 × 5
  `Student ID` `Full Name`      favourite.food     mealPlan            AGE  
         <dbl> <chr>            <chr>              <chr>               <chr>
1            1 Sunil Huffmann   Strawberry yoghurt Lunch only          4    
2            2 Barclay Lynn     French fries       Lunch only          5    
3            3 Jayendra Lyne    N/A                Breakfast and lunch 7    
4            4 Leon Rossini     Anchovies          Lunch only          <NA> 
5            5 Chidiegwu Dunkel Pizza              Breakfast and lunch five 
6            6 Güvenç Attila    Ice cream          Lunch only          6    

フォルダ構造について

  • Z:/Desktop/students.csvstudents.csvのパス、つまりそのファイルがどこにあるのかを示す情報です。
    • パスはコンピューター内の住所のようなものです。
  • コンピューターのデータはすべてファイルフォルダーで整理されています。
    • ファイル:データ
    • フォルダー:ファイルの入れ物
    • パスの/は日本語の「の」と同じような意味です。

.csvファイルをRに読み込む

  • これでRに.csvファイルのデータを読み込むことができました。

  • しかし、データの読み込みからデータの解析の最後まで、すべての作業を一度で終わらせることは現実的ではありません。

  • ここで一旦作業を停止して、RStudioを閉じましょう。

作業の再開

  • 再度RStudioを開きましょう。

  • 今までの成果はどうなっているのでしょうか?

    • またすべて一からやり直す必要があります。
  • もっと良いやり方があるはずです…。

スクリプト

  • これまではRのコマンドを直接コンソールに入力していました。

    • 同じ作業を再度行うときは効率が悪いです。
  • スクリプト(テキストファイル)にコマンドを保存すると、後々楽になります。

  • 「File」 → 「New File」 → 「RScript」

スクリプトの編集

  • スクリプトにこれまで書いたコードを入れましょう:
    • コメントを入れることで、自分にこのコードが何をしているのかをメモしておきましょう。
library(tidyverse)

# Load data
students <- read_csv("Z:/Desktop/students.csv")

スクリプトの保存

  • スクリプトを保存しましょう。

  • 「File」 → 「Save As」 → 場所とファイル名を決めて保存します。

  • 今回はstudents.Rとしましょう。

    • Rスクリプトは.rもしくは.Rのファイル拡張子を使用します。

スクリプトとコンソールの違い

  • スクリプトに記述されているRコードは「これから実行するコマンドのリスト」のようなものです(レシピをイメージしてください)。

  • Rにそのコマンドを実行するように指示する必要があります。

スクリプトからのコマンドの実行

  • まずはカーソルを実行したい行に置きます(矢印キーかマウスを使ってください)。

  • 「Run」アイコンをクリックします。

  • または、ショートカットを使います(おすすめ)。
    • Mac: Enterを同時に押す
    • Windows: CtrlEnterを同時に押す

チャレンジ ①

RStudioを閉じてから、再度スクリプトを開いてコマンドを実行してください。

一々コマンドを入力するよりは便利でしょう?

プロジェクトについて

  • スクリプトを書くことでデータ解析の作業をかなり楽にしましたが、次にはファイルを整理する必要があります。

  • ファイルの整理には、RStudioのプロジェクト機能を使用します。

プロジェクトについて

  • RStudioのプロジェクトとは、データ解析に使用するフォルダーのことです。

  • このフォルダー内に、特定のデータ解析プロジェクトに必要なファイルを配置します。

プロジェクトの作り方

  • 「File」 → 「New Project…」 → 「New Directory」 → 「New Project」

  • 今回のプロジェクトはstudents_analysisと名付け、デスクトップに配置しましょう。

    • この教室のコンピューターはデスクトップ以外の場所にプロジェクトを置くと、ログアウト時に消去されます。

プロジェクトの作り方

  • students_analysisプロジェクトを作成したら、その中にdataというフォルダーを作成し、students.csvdataに移動してください。
    • 「Files」パネルでフォルダーアイコンをクリックします。
  • 右下のファイルパネルにdataが含まれていることを確認できます。

プロジェクトの開き方

  • RStudioを一旦閉じましょう。

  • 今度は、アプリ一覧からではなく、プロジェクトからRStudioを開きましょう。

  • students_projectフォルダーを開き、その中のstudents_project.Rprojファイルをダブルクリックしてください。

  • すると、RStudioはそのプロジェクトに入った状態で起動します。
    • ファイルパネル(右下)にこれまでのdatastudents.Rが表示されていることを確認してください。

パスについて

  • プロジェクトを開いた後、スクリプトを使ってもう一度students.csvを読み込みましょう:
library(tidyverse)

# Load data
students <- read_csv("Z:/Desktop/students.csv")
Error: 'Z:/Desktop/students.csv' does not exist.

今度はうまくいかない。なぜでしょう?

  • 先ほど、students.csvstudents_projectに移動しました。つまり、もうDesktopには置いていないため、Desktop内を探しても見つかりません。

チャレンジ ②

  • このコードをどのように変更すればstudents.csvを読み込むことができるでしょうか?
# Load data
students <- read_csv("Z:/Desktop/students.csv")

絶対パス

  • 一つの解決方法は絶対パスを指定することです:
    • コンピューターの最上位ディレクトリ(教室のパソコンではZ:)から始まります。
      • Macの場合は/から始まります。
# Load data
students <- read_csv("Z:/Desktop/students_project/data/students.csv")
  • しかし、もしこのプロジェクトを再度移動した場合、同じような問題が発生します。

相対パス

  • もう一つの方法は「相対パス」と呼ばれるものです。

  • つまり、Rの作業ディレクトリ(Rが現在入っているフォルダー)から見たパスです。

  • getwd()でRの作業ディレクトリを確認できます:

    • “Get working directory”
getwd()
  • 現在、RはDesktop/students_analysis/に入っていることがわかりました。

  • したがって、以下のようにデータを読み込むことができます:

# Load data
students <- read_csv("data/students.csv")
  • RStudioのプロジェクト機能を使うと、.Rprojファイルが含まれるフォルダーが作業ディレクトリになります。

  • ファイルの場所がすぐにわかり、プロジェクトを別の場所に移動してもコードを変更する必要がありません。

  • 相対パスをおすすめします!

チャレンジ ③

  • penguins_analysisというプロジェクトをデスクトップに作成して開いてください。終わったら、再度students_analysisを開いてください。
    • penguinsは別の教科書のデータセットです)