賢くなりたいトイプードルの日記

データサイエンス系の話をメインにしていきます

JupyterLabにRを導入してデータ分析してみた

Python機械学習ライブラリ、Rは統計解析のライブラリが充実していて、Pythonがそのうち覇権を握るだろうと言われたりしたこともあったものの、最近は棲み分けがうまくされるようになってきているということなので、Rもやっておこうと思った。

ただ、普通通りにRとRStudioを導入してそのあとJupyterLabでRを使えるようにしようとしたらいくつか躓いたので、紹介する。

Rの導入

公式ページからDLできます。

RStudioの導入

公式ページから

install.packages('tidyverse')

でtidyverseを使おうと思ったら、

There is a binary version available but the source version is later: binary source needs_compilation processx 3.4.1 3.4.2 TRUE

Do you want to install from sources the package which needs compilation?

と言われる。Yesでreturnする。ダウンロードが始まり、最後に以下のようなエラーメッセージが出る

警告メッセージ: original(pkgs, lib, repos, ...) で: installation of package ‘processx’ had non-zero exit status

ここからXQuartzっていうのをダウンロードして、インストールすればOK


RをJupyterLabで使えるようにする方法

ターミナルで「R」と叩いてreturnし、コンソールが表示されたら、

install.packages("devtools")

を入力。すると

--- このセッションで使うために、CRAN のミラーサイトを選んでください --- 
Secure CRAN mirrors

と表示されるので、Japanの番号を入力してreturn。

そのあと、以下のコードを入力、return

devtools::install_github('IRkernel/IRkernel', force = T)
IRkernel::installspec()

すると、JupyterLabでRがつかえるようになりました。

Rでデータ分析する

library(tidyverse)

all_data <- read_csv("CSV_file.csv")

tidyverseというライブラリを指定して、URLからcsvファイルを読み込む。

summary(email_data)

で概要を確認して、

part_df <- all_data %>%
    filter(segment != "Womens") %>%
    mutate(treatment = if_else(segment ==
    "Mens",1,0               ))

このコマンドでsegment列が"Womens"のデータを除き、treatment列を追加してsegmentが"Mens"だったら1、そうじゃなければ0を値として取るようにする。

Pythonだったらこうなる

part_df = all_data[email_data['segment'] != "Womens E-Mail"]
part_df['treatment'] = part_df['segment'].apply(lambda s: 1 if s == 'Mens' else 0)

自分はPythonに慣れているので、Pythonの書き方のほうがわかりやすいですが、描画などはライブラリをインポートすることなくできるので、Rも慣れれば強い味方になってくれそうな予感がします