2012-12-22 74 views
3
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(data $ date)來指定「date」變量是一個時間序列,但每次我都這樣做時,它會將「date」變量變成數字。更不用說我以爲我指定數據集中的「日期」列是最初加載時的時間/日期變量。我如何將data.frame指定爲時間序列?我感謝任何幫助。謝謝!!

回答

4

嘗試這樣一個例子:

library(zoo) 

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

感謝您的回覆Grothen。如果你有一個xls文件,「read.zoo」可以工作。它不會加載csv文件。有沒有「read.zoocsv」命令? – gabriel

+0

@gabriel,'read.zoo'讀取產生動物園對象的文本文件。我已經更新了答案以添加'sep =「,」'。 –

+0

我明白了,所以read.zoo只能讀取.txt文件。如果你有一個csv文件,你怎麼做?那麼按照agestudy的概念,「xts」包是否是最好的方法?謝謝! – gabriel

1

我覺得你所需要的是山坳 體重相鄰行之間的差別你可以試試:

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

,因爲40 - 20 = 20,70 - 40 = 30等 類似的嘗試difftime時間系列,以防您需要的時間序列對象被設計用於追蹤以相等間隔的時間點採樣的數據

1

你有一個不均勻的採樣間隔,但ts(data)似乎做你正在尋找。

3

當您操作時間序列時,最好使用(動物園或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 
+0

謝謝agestudy!從你的代碼看來,R只能識別時間序列數據實際上是時間序列,如果「日期」變量在其中指定了一個時間。我對麼?你的命令「as.POSIXct(dat $ date)」實質上是強迫日期變量有時間/(小時,分鐘,秒)連接到變量? – gabriel

+0

我也注意到,通過使用xts包,我使用的數據不再成爲data.frame。 – gabriel

相關問題