【问题标题】:quantmod - getSymbols.MySQL formatquantmod - getSymbols.MySQL 格式
【发布时间】:2012-11-04 06:28:36
【问题描述】:

我使用 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)。 20121031 与 quantmod 通常期望的正常 (%Y-%m-%d) ex.2012-10-31 格式相反。文档说这可以通过 setDefaults(getSymbols.MySQL,...) 更改,但没有说明如何。有什么想法吗?

【问题讨论】:

    标签: r quantmod


    【解决方案1】:

    对不起,我不允许发表评论,但是问题不是您的返回列名称包含“ticker”,而 db.fields 没有指定这一点,导致两者之间错位吗?

    从我所包含的示例中可以看出,实际表的名称应该与股票代码相同。所以不应该有“ticker”列。

    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)
    } 

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 2015-11-30
      • 2018-05-22
      • 1970-01-01
      • 2013-07-21
      • 2016-03-28
      相关资源
      最近更新 更多