将数据帧指定为时间序列

时间:2012-12-22 05:57:32

标签: r xts zoo

data=read.csv("filelocation",header=T,colClasses=c("Date","numeric")

  date   weight
2010-10-04 52495    
2010-10-01 53000    
2010-09-30 52916    
2010-09-29 52785    
2010-09-28 53348    
2010-09-27 52885    
2010-09-24 52174    
2010-09-23 51461    
2010-09-22 51286    
2010-09-21 50968    
2010-09-20 49250

data=data[order(data$date),]
diffweight1=weight-lag(weight,1)    

大家好,

我正在将时间序列数据加载到R中进行分析。我试图延迟其中一个变量以区分系列。不幸的是,差异变量的值都等于0,因为R在落后权重变量方面不成功。我知道我应该使用as.ts(数据$ date)来指定“date”变量是一个时间序列,但每次我这样做时它会将“date”变量更改为数字数字。更不用说我想了我指定数据集中的“日期”列是我最初加载时的时间/日期变量。如何将data.frame指定为时间序列?我感谢任何帮助。谢谢!!

4 个答案:

答案 0 :(得分:4)

试试这个:

library(zoo)

z <- read.zoo("filelocation", header = TRUE, sep = ",")
diff(z)

答案 1 :(得分:3)

当你操纵时间序列时,最好使用(zoo或xts)包。许多时间序列操作滞后,差异变得非常简单。

这里有一个使用xts包的例子(我更喜欢这个)

# I read your data
dat <- read.table (text = 'date   weight
2010-10-04 52495    
2010-10-01 53000    
2010-09-30 52916    
2010-09-29 52785    
2010-09-28 53348    
2010-09-27 52885    
2010-09-24 52174    
2010-09-23 51461    
2010-09-22 51286    
2010-09-21 50968    
2010-09-20 49250',header=TRUE)
# I construct my xts object
dat.xts <- xts(dat$weight,order.by=as.POSIXct(dat$date))
# new 2 columns withs lags(1) and diff

merge(dat.xts, ll = lag(dat.xts),dd =diff(dat.xts))
           dat.xts    ll   dd
2010-09-20   49250    NA   NA
2010-09-21   50968 49250 1718
2010-09-22   51286 50968  318
2010-09-23   51461 51286  175
2010-09-24   52174 51461  713
2010-09-27   52885 52174  711
2010-09-28   53348 52885  463
2010-09-29   52785 53348 -563
2010-09-30   52916 52785  131
2010-10-01   53000 52916   84
2010-10-04   52495 53000 -505

答案 2 :(得分:1)

我觉得你需要的是重量col的相邻行之间的差异 你可以尝试:

weight <- c(20,40,70,110)
diff(weight)
[1] 20 30 40

因为40 - 20 = 20,70 - 40 = 30,依此类推 同样,如果您需要,请尝试使用difftime进行时间序列

答案 3 :(得分:1)

时间序列对象旨在跟踪在等间隔时间点采样的数据。您的采样间隔不均匀,但ts(data)似乎正在寻找您正在寻找的东西。