【初心者向け】10行以内のスクリプト(9.bashから実行するR)

### 【初心者向け】10行以内のスクリプト(9.bashから実行するR)
pythonで色々なライブラリを使えば、「少ないコードでもちょっとした事が出来て、少なければ5行程でもちょっとしたスクリプトが作れ、便利だな。」と思ったので、pythonやその他、コマンドを羅列しただけのものも出てくるかも知れませんが、10行程のスクリプトを不定期で投稿してみようと思います。

**第9回**として、<font color=blue>bashから実行するRを投稿したいと思います。</font>
pythonも便利だと思うのですが、統計やデータの分析に関しての情報を色々と探す過程で、Rのコードも見る機会があり、Rの環境も試してみたいと思い、環境を準備、様々なサイトを参考にスクリプトを書いてみました。
統計やデータ分析に特化しているという事で、まだ日が浅いながら、コーディングだけを考えるとやはり使いやすいと感じました。

Rを使えば、データを読み込んで、プロットして画像を保存する等の事も割と簡単に出来ました。
Rstudioで記述した為替相場のデータを欠損値の処理等をして、プロットするスクリプトを、bashで呼んでみました。

データは、以前ダウンロードしてあった、dexjpusのcsvを使用しました。
https://fred.stlouisfed.org/series/DEXJPUS

***

【環境】
Linux: debian10.4
bash: 5.0.3
R: 3.5.2
TTR: 0.23-6
xts: 0.12-0
quantmod: 0.4.17
imputeTS: 3.0

### 
 
### 1.Rのスクリプトを呼ぶ様に、ファイルに記述
スクリプトはターミナルから実行しました。

```bash

#!/bin/env bash
Rscript dexjpus_plot.r

```

### 2.Rのスクリプトを実行
【1】「read.csv('ファイル名.csv')」で、csvを読み込んで、データフレームに格納
*コード) daily_data <- read.csv('./dexjpus_20200417.csv')*

【2】「as.xts(read.zoo(データフレーム))」で、データフレームをxtsオブジェクトに変換して、格納
*コード) daily_xts <- as.xts(read.zoo(daily_data))*

【3】「na_interpolation(xtsオブジェクト ,option = "linear")」で、欠損値を補完して処理済みデータとして、xtsオブジェクトを変更
*コード) daily_xts <- na_interpolation(daily_xts ,option = "linear")*

【4】「chart_Series(xtsオブジェクト)」で、チャートをプロット
*コード) chart_Series(daily_xts)*

<font color=blue>ライブラリのインポート等を除けば、csvを読み込み・欠損値の補完・グラフのプロット・保存まで、わずか4行というシンプルさです。</font>

```R:R3.5

# simpe mooving average sample
daily_data <- read.csv('./dexjpus_20200417.csv')

# names(daily_data)
#class(daily_data)

# import TTR package
library(TTR)
library(xts)
library(imputeTS)
#library(forecast)
library(quantmod)
daily_xts <- as.xts(read.zoo(daily_data))
#head(daily_xts)

# NA
daily_xts <- na_interpolation(daily_xts ,option = "linear")
#ma_daily5 <- SMA(daily_xts ,5)

#plot(ma_daily5)
jpeg("dexjpus_daily.jpg")
chart_Series(daily_xts)
dev.off()

```

様々なサイトの情報を参考にライブラリも追加しながら、ひとまず移動平均のプロット等が出来ました。
このスクリプトでは実行していませんが、期間毎のテクニカルチャートを重ねたり、上昇・下降のポイントで色を変更したりといった事も割と少ないコードで出来ました。

![dexjpus_daily.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624077/d6cf4062-3c24-7688-bb90-e51ce6279ebe.jpeg)

<font color=blue>**データ分析初心者からみた、pythonとRの比較**</font>

***Rは環境構築が終わればコードは書きやすく、統計や金融のライブラリが充実。***
***pythonは、Rよりコードが多くなる事もあるが、情報源等も含めた環境が優位。***

**Rの優位だと思う事**
・pythonと比較してもデータの分析やプロット等が少ないコードで実現しやすい様です。
・Rstudioが使い易い。
・予測や分析の他、金融向けにチャートプロットする等が手軽に導入出来る。

**pythonが優位だと思う事**
仮想環境・パッケージ管理・開発環境の選択がRより、恵まれている。
・pip3・venv、condaの環境の完成度が高い
・jupyterの他、IDE等もある。
・参考になるwebや書籍といった情報が多い。

### まとめるてみると

pythonはパッケージを混在しなければ、<font color=blue>pip3・venv、若しくはcondaの完成度が高く</font>パッケージの導入で、エラーが起こる事は少ないと思います。
またコーディングの環境もjupyter、その他IDE等、<font color=blue>環境の完成度が高い</font>

RStudioは使い易いのですが、パッケージ導入で、エラーが頻発する端末もありました。
エラーを見ながら、解決しますが、出来れば仮想環境が良いと思い、condaがRにも対応している事を思い出し、minicondaを別の端末に導入。

Rstudioがcondaから検索出来る事を確認後、仮想環境にRをインストール(Rの実行は未確認)、Rstudioもインストールしようとしましたが、インフラが遅いせいか、或いは環境に起因するものなのか不明ですが、ダウンロードが始まらないので、諦めてしまいました。
次策という事で、eclipse、これは自分の環境では、重くて止めてしまいました。
この辺りで、結構な時間を要しました。

linuxのパッケージである程度まで、インストールして、その上で依存するパーッケージを導入出来る様に、「gdebi」コマンドでRStudioを導入・使うかもしれないパーッケージも導入、不要・重複しているものもあるかも知れません。
現在、この記事を書いている端末にも、重複しているパッケージがありそうです。

この環境で、R、python、shellスクリプト、その他BIツール等も併用していく想定です。

**以上、【初心者向け】10行以内のスクリプト(9.bashから実行するR)でした。**