Dygraphs中时间序列的差异

时间:2016-05-18 14:43:20

标签: difference dygraphs

我为可能是一个非常简单的问题道歉,但我还没有找到一个例子来弄明白。我正在向dygraph提供简单的CSV数据,其中row包含不同的时间,然后是几个变量的值(当时)。我可以把数据绘制得很好。但是,我想知道如何让dygraphs执行该数据的功能。最初我只想计算各种变量的时间步长之间的差异,但之后我还想做一些额外的事情,比如计算平均值和标准差。我假设我需要在javascript代码中进行数学计算,但不太知道该怎么做。

所以,如果有人可以提供一个简单的例子,说明如何计算变量的时间步长之间的差异,并获得绘制的dygraph,我真的很感激它。这就是我的意思......

如果这是提供的数据。

1:DateTime,var1,var2 2:DateTime,var1,var2 3:DateTime,var1,var2 ....

在每个DateTime,我想在前一个DateTime找到var1-var1的值,在前一个DateTime找到var2-var2,并绘制那些。

1 个答案:

答案 0 :(得分:0)

这应该有效。由于您没有提供我创建的数据集。代码中的注释应该解释每个步骤的作用。随意在评论中发表问题。

df <- data.frame(time=c("2016-05-03","2016-05-04","2016-05-05"),start=c(5,4,2),end=c(2,6,3))
library(dplyr)
#get dataframe with each row minus the previous row
df<-mutate(df, diff.end= end-lag(end),diff.start= start-lag(start))
#convert the date string to a date object
dates<-format(as.Date(df$time),format="%Y-%m-%d")
#create dataframe with just the data we want to plot
df<-cbind(df$diff.start,df$diff.end)
colnames(df)<-c("starting.diff","ending.diff")
#make the dataframe a time series object
timeseriesobj<-xts(df,order.by=as.Date(dates))
timeseriesobj
#create the dygraph
dygraph(timeseriesobj)
#note that the first point doesnt get plotted because its starting and ending values are NA

运行时的代码输出:

> df <- data.frame(time=c("2016-05-03","2016-05-04","2016-05-05"),start=c(5,4,2),end=c(2,6,3))
> library(dplyr)
> #get dataframe with each row minus the previous row
> df<-mutate(df, diff.end= end-lag(end),diff.start= start-lag(start))
> #convert the date string to a date object
> dates<-format(as.Date(df$time),format="%Y-%m-%d")
> #create dataframe with just the data we want to plot
> df<-cbind(df$diff.start,df$diff.end)
> colnames(df)<-c("starting.diff","ending.diff")
> #make the dataframe a time series object
> timeseriesobj<-xts(df,order.by=as.Date(dates))
> timeseriesobj
           starting.diff ending.diff
2016-05-03            NA          NA
2016-05-04            -1           4
2016-05-05            -2          -3
> #create the dygraph
> dygraph(timeseriesobj)
> #note that the first point doesnt get plotted because its starting and ending values are NA