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指定为时间序列?我感谢任何帮助。谢谢!!
答案 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)
似乎正在寻找您正在寻找的东西。