2

次のように quantmod getSymbols を使用して MySQL データベースにクエリを実行します。

pot<-getSymbols(Symbols="pot",src='MySQL',user='root',password='root',dbname='data',
   adjust=TRUE,db.fields=c("date","open","high","low","close","volume","time"),
   auto.assign=FALSE,
   field.names=c("ticker","date","time","open","high","low","close","volume"),
   format="%Y%m%d")

戻り値: 日付変換を台無しにします。

      pot.Open  pot.High  pot.Low   pot.Close pot.Volume pot.Adjusted

7058-02-20 "40.1700" "40.1900" "40.1000" "40.1500" "104900" "09:30:59"
7058-02-20 "40.0900" "40.1725" "40.0900" "40.1725" "13200" "09: 31:53"
7058-02-20 "40.1900" "40.3394" "40.1800" "40.2900" "16500" "09:32:57"
7058-02-20 "40.3000" "40.3700" "40.2400" "40.2400" "36500 " " "09:33:58"
7058-02-20 "40.2600" "40.3000" "40.2000" "40.2500" " 6700" "09:34:59"
7058-02-20 "40.2600" "40.3100" "40.2000" " 40.2000" "13900" "09: 35:59"

次のようにしたいと思います。

               pot.Open  pot.High  pot.Low   pot.Close pot.Volume pot.Adjusted

2012-10-31 09:30:59 "40.1700" "40.1900" "40.1000" "40.1500" "104900" "09:30:59"
2012-10-31 09:31:53 "40.0900" "40.1725" "40.0900 " ""40.1725" "13200" "09:31:53"
2012-10-31 09:32:57 "40.1900" "40.3394" "40.1800" "40.2900" "16500" "09:32:57"
2012-10- 31 09:33:58 "40.3000" "40.3700" "40.2400" "40.2400" "36500" "09:33:58"
2012-10-31 09:34:59 "40.2600" "40.3000" "40.2000" "40.2500" " 6700" "09:34:59"
2012-10-31 09:35:59 "40.2600" "40.3100" "40. 2000" "40.2000" "13900" "09:35:59"

テーブルの日付形式が (%Y%m%d) ex であることに関係していると思います。通常の (%Y-%m-%d) ex.2012-10-31 フォーマット quantmod とは対照的に、20121031 が期待されます。ドキュメントには、これは setDefaults(getSymbols.MySQL,...) を介して変更できると記載されていますが、その方法は記載されていません。何かご意見は?

4

1 に答える 1

0

申し訳ありませんが、コメントすることはできませんが、返される列の名前に「ticker」が含まれており、db.fields でこれが指定されておらず、2 つの間のずれが発生しているという問題ではありませんか?

私が含めている例からわかるように、実際のテーブルの名前はティッカーと同じでなければなりません。したがって、「ティッカー」列があってはなりません。

library(quantmod)
library(RMySQL)

MySymbols = c("MRK","GOOG","AAPL")

getSymbols(MySymbols, src="yahoo")
dbc = dbConnect(MySQL(), user="youruser", pass="yourpass", host="yourhost", dbname="yourdb")
for(I in 1:length(MySymbols) {
        dbWriteTable(dbc, name=MySymbols[i],value=as.data.frame(get(MySymbols[i])), overwrite=TRUE)
        res = dbSendQuery(dbc, paste("ALTER TABLE `yourtable`.`",MySymbols[i],
    "` CHANGE COLUMN `row_names` `Date` DATE NULL DEFAULT NULL,
                CHANGE COLUMN `", MySymbols [i],"_Open` `o` DOUBLE NULL DEFAULT NULL,
                CHANGE COLUMN `", MySymbols [i],"_High` `h` DOUBLE NULL DEFAULT NULL,
                CHANGE COLUMN `", MySymbols [i], "_Low` `l` DOUBLE NULL DEFAULT NULL,
                CHANGE COLUMN `", MySymbols [i], "_Close` `c` DOUBLE NULL DEFAULT NULL,
                CHANGE COLUMN `", MySymbols [i], "_Volume` `v` DOUBLE NULL DEFAULT NULL,
                CHANGE COLUMN `",MySymbols[i],"_Adjusted` `a` DOUBLE NULL DEFAULT;", sep=""))
        dbClearResult(res)
} 

于 2016-12-09T15:56:00.217 に答える