2012-11-04 4 views
2

나는 다음과 같이 quantmod getSymbols를 사용하여 MySQL 데이터베이스를 조회 : 날짜 변환을 엉망으로 :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", "9시 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" "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 9시 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" "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.2000" "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) 이전의 테이블에있는 날짜 형식과 관련이 있다고 생각합니다. (% Y- % m- % d) ex.2012-10-31 형식 퀀텀 (quantmod)이 일반적으로 기대하는 것과 반대로 설명서에 따르면이 문제는 setDefaults (getSymbols.MySQL, ...)를 통해 변경할 수 있지만 어떻게 처리되는지는 설명하지 않습니다. 이견있는 사람?

답변

0

죄송합니다. 저는 주석을 달 수는 없지만 반송 열 이름에 "ticker"가 포함되어있는 문제는 아니며 db.fields가이를 지정하지 않아 둘 사이의 불일치가 발생합니까?

예제에서 알 수 있듯이 실제 테이블 이름은 시세표와 동일해야합니다. 따라서 "시세 표시"열이 없어야합니다.

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