使用R Shiny中的MySQL数据创建时间序列

时间:2014-04-07 08:59:48

标签: r time-series shiny rmysql

我正在尝试使用R Shiny开发一个仪表板,它从MySQL数据库中提取数据并以图形形式表示。我需要使用多个数据创建时间序列。但是,当MySQL中的时间戳值无法转换为时间序列中的日期时间值时,会出现问题。以下是我的server.R代码:

con <- dbConnect(MySQL(),user="root",password="891208",host="localhost",dbname="openPos")
shinyServer(function(input, output) {
 query1 <- reactive({ "SELECT sale_time,sum(quantity_purchased * item_unit_price) 
                            AS revenue, sum(quantity_purchased * item_cost_price) AS cost,
                            sum(quantity_purchased * item_unit_price)-sum(quantity_purchased * item_cost_price) as profit
                            FROM ospos_sales, ospos_sales_items
                            WHERE ospos_sales.sale_id = ospos_sales_items.sale_id
                            GROUP BY sale_time"})
result1 <- reactive({dbGetQuery(con,query1())})
z <- reactive({ts(result1())})
output$ts <- renderPlot({p<-ts.plot(z())
                       print(p)})
output$table <-renderTable({z()})

表的输出将如下所示

有谁能告诉我为什么我不能用这些数据库值创建时间序列?

1 个答案:

答案 0 :(得分:0)

如果时间戳保证定期,那么你应该对ts(result1()[-1], start=myStart, frequency=myFrequency)的某些内容很好,我要删除第一列,因为你不想绘制时间 - 然后将其他列绘制为从myStart开始的时间序列(您应该能够从result1()[1,1]中提取(我们不知道您的时间戳格式是什么,因此很难给出指导),以及myFrequency将是您每单位时间内进行的测量次数。

如果您没有常规时间点,那么使用ts完全是错误的 - 在这种情况下,大多数人似乎都使用zoo包。