2017-10-05 6 views
1

からデータをフェッチ:R Iが正常にRを使用してdbが私のmysqlからデータをフェッチMySQLのDBループ

library(RMySQL) 
mydb = dbConnect(MySQL(), user='user', password='pass', dbname='fib', host='myhost') 
rs = dbSendQuery(mydb, 'SELECT distinct(DATE(date)) as date, open,close FROM stocksng WHERE symbol = "FIB7F";') 
data <- fetch(rs, n=-1) 
dbHasCompleted(rs) 

今私は、オブジェクトリストしました:

> print (typeof(data)) 
[1] "list" 

各要素はタプルです

okよく今私の問題:私は%close(x)とclose(x)と翌日open(x + 1)のベクトルを取得したいと思います。 )最後まで私は項目に正しくアクセスできません!

例:((オープン)/クローズ* 100)-100)

私は試してみてください。

for (item in data){ 
    print (item[2]) 
} 

など、すべての可能な組み合わせ:

for (item in data){ 
    print (item[][2]) 
} 

が、右にアクセスすることはできません要素:!誰も助けることができますか?

答えて

1

ORDER BY句を指定していないため、MySQLクエリでこれよりも大きな問題が発生しています。

SELECT DISTINCT 
    DATE(date) AS date, 
    open, 
    close 
FROM stocksng 
WHERE 
    symbol = "FIB7F" 
ORDER BY 
    date 

ここでは、結果セットを日付順に並べ替えることで、現在および次の開いているか閉じているかを話すことができます。今、あなたは、現在クローズとオープン翌日間のパーセンタイル差を取得したい場合は代わりに適切なクエリを使用して、あなたは試みることができる:

require(dplyr) 
(lead(open, 1)/close*100) - 100 

または使用してベースR:

(open[2:(length(open)+1)]/close*100) - 100 
+0

返信ありがとうございます!私はその図書館をチェックします!しかし、より多くの結果の列の間には、より多くのnaifソリューションがループしていますか? – egariM

+0

@egariMベースRで動作するオプションで更新しました。 –

0

NAIFバージョン:

for (row in 1:nrow(data)){ 
    date <- unname (data[row,"date"]) 
    open <- unname (data[row+1,"open"]) 
    close <- unname (data[row,"close"]) 
    var <- abs((close/open*100)-100) 
    print (var) 
} 
関連する問題