3

分析のために時系列データをRにロードしています。シリーズを区別するために、変数の1つを遅らせようとしています。残念ながら、差変数の値はすべて 0 に等しくなります。これは、R が重み変数を遅らせることに成功しなかったためです。as.ts(data$date) を使用してその「日付」変数が時系列であることを指定することになっていることはわかっていますが、そうするたびに「日付」変数が数値に変更されます。言うまでもなく、最初にロードしたときに、データセットの「日付」列が時間/日付変数であることを指定したと思いました。data.frame を時系列として指定するにはどうすればよいですか?

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)
4

4 に答える 4

4

これを試して:

library(zoo)

z <- read.zoo("filelocation", header = TRUE, sep = ",")
diff(z)
于 2012-12-22T09:56:36.413 に答える
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
于 2012-12-22T07:12:11.200 に答える
1

私が必要だと思うのは、重みの列の隣接する行の違いです。試すことができます:

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

40 - 20 = 20、70 - 40 = 30 などなので、必要に応じて時系列の difftime を同様に試してください。

于 2012-12-22T06:12:53.857 に答える
1

時系列オブジェクトは、等間隔の時点でサンプリングされたデータを追跡するように設計されています。サンプリング間隔が不均一ですが、ts(data)探していることをしているようです。

于 2012-12-22T06:33:47.197 に答える