2021年1月25日月曜日

RStudioで形態素解析MeCabを使う

 概要

Rを用いたデータ分析で形態素解析をする必要があったのでその導入方法と使い方をメモしておきます。


前提とする環境

OS:Windows10 Pro

R実行環境:RStudio


インストール

インストールは以下のコマンドで行います。

> install.packages("RMeCab")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/ken/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘RMeCab’ is not available for this version of R

A version of this package for your version of R might be available elsewhere,
see the ideas at
https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages

・・・あれ。インストール出来ない。
理由不明ですが古いバージョンはこれで出来たようなのですが最新バージョンはこれだけではダメです。

インストール(再度)

①MeCabインストール

まずMecabをインストールします。以下サイトから「mecab-0.996.exe」を取得してインストールしてください(インストーラーの案内に従ってやればOK)。

http://taku910.github.io/mecab/#download

②RへMeCabインストール

①が終わったらRStudioを起動してRへMeCabパッケージをインストールします。

<- as="" by="" from="" group="" select="" span="" sqldf="" sum="" tljk="">> install.packages("RMeCab", repos = "https://rmecab.jp/R")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/ken/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
 URL 'https://rmecab.jp/R/bin/windows/contrib/4.0/RMeCab_1.06.zip' を試しています 
Content type 'application/zip' length 3173864 bytes (3.0 MB)
downloaded 3.0 MB

package ‘RMeCab’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\ken\AppData\Local\Temp\RtmpCk1cKN\downloaded_packages
デキター。

使い方

使い方は以下のとおりになります(定番)。

<- as="" by="" from="" group="" select="" span="" sqldf="" sum="" tljk="">> library(RMeCab)
> RMeCabC("すもももももももものうち")
[[1]]
    名詞 
"すもも" 

[[2]]
助詞 
"も" 

[[3]]
  名詞 
"もも" 

[[4]]
助詞 
"も" 

[[5]]
  名詞 
"もも" 

[[6]]
助詞 
"の" 

[[7]]
  名詞 
"うち"
> # 「unlisst」を使うと↓のようにすっきりと出力出来ます。
> RMeCabC("すもももももももものうち") %>% unlist
    名詞     助詞     名詞     助詞     名詞     助詞     名詞
"すもも"     "も"   "もも"     "も"   "もも"     "の"   "うち" 
> # データフレームの場合は「RMeCabDF」関数を使います。
> # ↓の例はデータフレームhogeの2番目の列の項目を形態素解析しています。
> hg <- RMeCabDF(hoge[, 2])
ということで、無事に動かす事が出来ました!


本日はここまでで。




R言語でデータフレームをSQLで操作する

概要

Rのデータフレームを操作する方法として、SQLを用いたものがあります。そのやり方をメモしておこうと思います。


インストール

インストールは以下のコマンドで行います。

> install.packages("sqldf")
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/kk/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
also installing the dependencies ‘bit’, ‘bit64’, ‘memoise’, ‘plogr’, ‘gsubfn’, ‘proto’, ‘RSQLite’, ‘chron’

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/bit_4.0.4.zip' を試しています 
Content type 'application/zip' length 628912 bytes (614 KB)
downloaded 614 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/bit64_4.0.5.zip' を試しています 
Content type 'application/zip' length 562722 bytes (549 KB)
downloaded 549 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/memoise_1.1.0.zip' を試しています 
Content type 'application/zip' length 36847 bytes (35 KB)
downloaded 35 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/plogr_0.2.0.zip' を試しています 
Content type 'application/zip' length 18855 bytes (18 KB)
downloaded 18 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/gsubfn_0.7.zip' を試しています 
Content type 'application/zip' length 358111 bytes (349 KB)
downloaded 349 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/proto_1.0.0.zip' を試しています 
Content type 'application/zip' length 472164 bytes (461 KB)
downloaded 461 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/RSQLite_2.2.1.zip' を試しています 
Content type 'application/zip' length 2389208 bytes (2.3 MB)
downloaded 2.3 MB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/chron_2.3-56.zip' を試しています 
Content type 'application/zip' length 202074 bytes (197 KB)
downloaded 197 KB

 URL 'https://cran.rstudio.com/bin/windows/contrib/4.0/sqldf_0.4-11.zip' を試しています 
Content type 'application/zip' length 78316 bytes (76 KB)
downloaded 76 KB

package ‘bit’ successfully unpacked and MD5 sums checked
package ‘bit64’ successfully unpacked and MD5 sums checked
package ‘memoise’ successfully unpacked and MD5 sums checked
package ‘plogr’ successfully unpacked and MD5 sums checked
package ‘gsubfn’ successfully unpacked and MD5 sums checked
package ‘proto’ successfully unpacked and MD5 sums checked
package ‘RSQLite’ successfully unpacked and MD5 sums checked
package ‘chron’ successfully unpacked and MD5 sums checked
package ‘sqldf’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\kk\AppData\Local\Temp\RtmpMPzONL\downloaded_packages


使い方

使い方は以下のとおりになります。SQLの文法に従って操作可能ですが、SQLの文法はここでは省略します。

> library(sqldf)
 要求されたパッケージ gsubfn をロード中です 
 要求されたパッケージ proto をロード中です 
 要求されたパッケージ RSQLite をロード中です 
> # 使い方
> # sqldf("SELECT 列名 FROM データフレーム名 WHERE 列名 ==\'検索文字列\'")
> # 具体例(小売店舗の販売実績集計している風)
<- as="" by="" from="" group="" select="" span="" sqldf="" sum="" tljk="">> hoge <- sqldf("
+ SELECT
+ 	販売年月
+ 	, 店舗コード
+ 	, SUM(販売数) AS 販売数合計
+ 	, SUM(販売高) AS 販売高合計
+ FROM TLJK
+ GROUP BY
+ 	販売年月
+ 	, 店舗コード
+ ")


ということで、本日はここまでで。




2021年1月20日水曜日

FX自動トレード_2020年12月実績

 概要

2020年12月が終わり、FX自動トレードによる収益実績を取り纏めましたので振り返ってみたいと思います。


2020年12月結果

2020年12月の実績は、実利利益額:\41,352、実績利益率は1.62%でした。

ボラが殆ど無く、史上最低利益率となってしまいました。


なお今月頭に\800,000調達の目処が立ちましたので、入金額は\1,450,000→\2,250,000に増額しています。


進捗

続いて予実比較です。当初計画と比較すると、想定利益率は3.16%でしたので1.44%ショート、利益額は\29,138ショートという散々な結果になりました。また、本日までの実績平均利益率/月は2.80%になりました。


続いて、「10年1億円プロジェクト」の当初計画との予実比較は以下になります。\800,000入金しましたので2022年10月時点の預託証拠金にまで到達する事が出来ました。


また、入金額と利益率/月を調整した予定と、実績を比較した進捗は以下になります。

今月は大幅負けです。今月で2020年終わった為一度振り返ってみると、当初掲げた想定利益率3.16%というのがかなり難しい目標だったのかなというのが正直な感想です。高すぎる目標を達成するためにリスクをアップさせるのも嫌なので、もう少し様子を見てみて場合によっては想定利益率見直しも検討しようかと思います。


2021年1月14日木曜日

Rにおける文字列の取り扱い

概要

Rのデータ分析でよく使う文字列の操作コマンドをメモしようと思います。
必要に応じて調べてメモを追加していく予定です。


コマンド

①文字列の確認(NULL、NA、NaN、Inf)

> is.null(hoge) # NULLか否か
[1] true
> is.na(hoge) # NAか否か
[1] true
> is.nan(hoge) # NaNか否か
[1] true
> is.finite(hoge) # 有限か否か
[1] true
> is.infinite(hoge) # 無限か否か
[1] true
> complete.cases(hoge) # 欠損か否か
[1] true


②特定の文字列でのパディング

> # str_pad(param1, param2, pad=xxx)
> # param1:対象文字列 > # param2:パディング後の桁数 > # pad:パディングする文字 > str_pad("hoge", 6L, pad=0)

[1] 00hoge


③文字列の結合
> paste('a', 'b', 'c')
[1] "a b c" > # pasteをすると文字列の間に半角スペースが入ってしまう。 > # これが嫌な場合は「paste0」を用いる
> paste0('a', 'b', 'c')
[1]
"abc"



ということで、本日はここまでで。




2021年1月12日火曜日

Rのデータフレームの操作方法(基本)

概要

Rのデータ分析でよく使うデータフレームの操作コマンドをメモしようと思います。


コマンド

①データフレームの中身を参照

以下コマンドでコンソール上で確認する事が出来ます。
> head(X)
   No Date       ID  Num
1  1 2020/12/01 i01  20
2  2 2020/12/02 i02  21
3  3 2020/12/03 i03  22
4  4 2020/12/04 i04  23
5  5 2020/12/05 i05  24

RStudioでしたら、以下コマンドでビューア上で確認出来ます。

> View(X)

②データフレームの中身を参照(行列指定)

> # 行Noを指定
> X[1, ]
1  1 2020/12/01 i01  20
> # 列名を指定(列の番号でもOK)
> X[, "ID"]
[1] 20 21 22 23 24


③件数確認

> # 行数を確認
> nrow(X)
[1] 5
> # 列数を確認
> col(X)
[1] 4

④データフレームへ代入

> X[, "Num"] <- X[, "Num"] + 1
> X[, "ID"] [1] 21 22 23 24 25

⑤データフレーム削除

> remove(X)
>

⑥データフレームの列削除

> # 指定した項目名の列を削除
> test <- X[, colnames(X) != "Num"]
> head(test)
   No Date       ID
1  1 2020/12/01 i01
2  2 2020/12/02 i02
3  3 2020/12/03 i03
4  4 2020/12/04 i04
5  5 2020/12/05 i05

RStudioでしたら、以下コマンドでビューア上で確認出来ます。


本日はここまでで。

2021年1月8日金曜日

Rの基本操作コマンド

概要

Rで基本的なコマンドをメモしようと思います。

コマンド

①コンソール出力
> print("hoge")
hoge

②コメントアウト
> # 頭に「#」をつける

③コマンドのヘルプの確認方法

> # ヘルプを表示したいコマンドの頭に「?」を付ける
> ?read.xlsx
read.xlsx {openxlsx}	R Documentation
Read from an Excel file or Workbook object
Description
Read data from an Excel file or Workbook object into a data.frame
Usage
read.xlsx(
  xlsxFile,
  sheet = 1,
  startRow = 1,
  colNames = TRUE,
  rowNames = FALSE,
  detectDates = FALSE,
  skipEmptyRows = TRUE,
  skipEmptyCols = TRUE,
  rows = NULL,
  cols = NULL,
  check.names = FALSE,
  sep.names = ".",
  namedRegion = NULL,
  na.strings = "NA",
  fillMergedCells = FALSE
)
Arguments
xlsxFile	An xlsx file, Workbook object or URL to xlsx file.
sheet	The name or index of the sheet to read data from.
startRow	first row to begin looking for data. Empty rows at the top of a file are always skipped, regardless of the value of startRow.
colNames	If TRUE, the first row of data will be used as column names.
rowNames	If TRUE, first column of data will be used as row names.
detectDates	If TRUE, attempt to recognise dates and perform conversion.
skipEmptyRows	If TRUE, empty rows are skipped else empty rows after the first row containing data will return a row of NAs.
skipEmptyCols	If TRUE, empty columns are skipped.
rows	A numeric vector specifying which rows in the Excel file to read. If NULL, all rows are read.
cols	A numeric vector specifying which columns in the Excel file to read. If NULL, all columns are read.
check.names	logical. If TRUE then the names of the variables in the data frame are checked to ensure that they are syntactically valid variable names
sep.names	One character which substitutes blanks in column names. By default, "."
namedRegion	A named region in the Workbook. If not NULL startRow, rows and cols parameters are ignored.
na.strings	A character vector of strings which are to be interpreted as NA. Blank cells will be returned as NA.
fillMergedCells	If TRUE, the value in a merged cell is given to all cells within the merge.
Details
Formulae written using writeFormula to a Workbook object will not get picked up by read.xlsx(). This is because only the formula is written and left to be evaluated when the file is opened in Excel. Opening, saving and closing the file with Excel will resolve this.
Value
data.frame
Author(s)
Alexander Walker
See Also
getNamedRegions
Examples
xlsxFile <- system.file("extdata", "readTest.xlsx", package = "openxlsx")
df1 <- read.xlsx(xlsxFile = xlsxFile, sheet = 1, skipEmptyRows = FALSE)
sapply(df1, class)
df2 <- read.xlsx(xlsxFile = xlsxFile, sheet = 3, skipEmptyRows = TRUE)
df2$Date <- convertToDate(df2$Date)
sapply(df2, class)
head(df2)
df2 <- read.xlsx(
  xlsxFile = xlsxFile, sheet = 3, skipEmptyRows = TRUE,
  detectDates = TRUE
)
sapply(df2, class)
head(df2)
wb <- loadWorkbook(system.file("extdata", "readTest.xlsx", package = "openxlsx"))
df3 <- read.xlsx(wb, sheet = 2, skipEmptyRows = FALSE, colNames = TRUE)
df4 <- read.xlsx(xlsxFile, sheet = 2, skipEmptyRows = FALSE, colNames = TRUE)
all.equal(df3, df4)
wb <- loadWorkbook(system.file("extdata", "readTest.xlsx", package = "openxlsx"))
df3 <- read.xlsx(wb,
  sheet = 2, skipEmptyRows = FALSE,
  cols = c(1, 4), rows = c(1, 3, 4)
)
## URL
##
## Not run: 
xlsxFile <- "https://github.com/awalker89/openxlsx/raw/master/inst/readTest.xlsx"
head(read.xlsx(xlsxFile))
## End(Not run)
[Package openxlsx version 4.2.3 Index]

本日はここまでで。

Rの日付操作方法

 概要

Rのデータ分析でよく使う日付の操作コマンドをメモしようと思います。


コマンド

①文字列から日付型(yyyy-mm-dd)への変換

> # xlsxやcsvファイルを読み込むと数値表示になってしまう事がある
> X[, Date]
[1] 44003
> # この場合、as.Date関数を用いる事で修正が可能。
> # 「origin="1899-12-30"」は、xlsxやcsvの仕様に基づくおまじない
> # 「tz="Asia/Tokyo"」は、タイムゾーン。下記等を指定可能。
> # 日本:"Asia/Tokyo"、世界標準時:"GMT"
> X[, Date] <- as.date="" date="" origin="1899-12-30" span="" tz="Asia/Tokyo")
> X[, Date]
[1] 2020-06-21


②文字列から日時(yyyy-mm-dd hh:mm:ss)への変換

> # xlsxやcsvファイルを読み込むと数値表示になってしまう事がある
> X[, datetime]
[1] 43815.55
> # この場合、as.POSIXct関数を用いる事で修正が可能。
> # 「origin="1970-01-01"」は、日時操作時のおまじない > # 「tz="Asia/Tokyo"」は、タイムゾーン。①と同。 > X[, datetime] <- as.POSIXct((X[, datetime]-25569)*86400, tz="Asia/Tokyo", origin="1970-01-01")
> X[, datetime]
[1] 2020-05-14 07:05:00


③文字列から時間(hh:mm:ss)への変換

> # ②から「hh:mm:ss」になる部分だけを取り出せば良い
> X[, time]
[1] 43815.55
> # ②からformat関数で「hh:mm:ss」だけを取り出す
> X[, time] <- format(as.POSIXct((X[, time]-25569)*86400, tz="Asia/Tokyo", origin="1970-01-01"), "%H:%M:%S")
> X[, time]
[1] 07:05:00

①と②は紹介している書籍やブログが結構あるのですが③は意外と調べるのに苦労しました。
ということで、本日はここまでで。

FX自動トレード_2021年6月実績

      概要 2021年6月が終わり、FX自動トレードによる収益実績を取り纏めましたので振り返ってみたいと思います。 2021年6月結果 2021年6月の実績は、実利利益額:\66,761、実績利益率は1.42%でした。 今月もボラが全く出ず。利益率の連続過去最低記録更新は免...