我使用r:
成功从mysql数据库中获取数据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"
每个元素都是元组(?),如日期(图表),开放(长),关闭(长)
好吧现在我的问题:我希望在关闭(x)和第二天打开(x + 1)之前得到百分比差异的向量,直到结束但我无法正确访问该项目!
示例:((打开)/关闭* 100)-100)
我试试:
for (item in data){
print (item[2])
}
和所有可能的组合,如:
for (item in data){
print (item[][2])
}
但无法访问正确的元素:!有人可以帮忙吗?
答案 0 :(得分:1)
您在MySQL查询中遇到的问题比这更大,因为您没有指定ORDER BY
子句。请考虑使用以下查询:
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
答案 1 :(得分: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)
}