1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2020-05-15

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

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

第9回として、bashから実行するRを投稿したいと思います。
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のスクリプトを呼ぶ様に、ファイルに記述

スクリプトはターミナルから実行しました。


# !/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)

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

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

データ分析初心者からみた、pythonとRの比較

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

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

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

まとめるてみると

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

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

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

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

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

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?