2014-03-27 77 views
0

我是R的新用戶。我有四年數據的時間序列(比如說來自不同站點的觀測,a-f),時間間隔爲12小時。我實際上添加了第一列使用R_將時間序列分爲月度,年度,季節性

t<-seq(from=as.POSIXct("2009-9-25 18:00", tz="cet"),by="12 hours", length.out=NROW(obs)) 
obsf<-cbind(t,obs) 

其中'obs'是觀察矩陣。在數據框的前四行查找下面。 (我不知道爲什麼「T」欄顯示爲數字而不是時間戳)

   t  a  b   c  d  e  f    
[1,] 1253894400 108.6912 107.7886 107.1125 106.7521 106.7440 107.0581 
[2,] 1253937600 109.1711 108.8854 108.6159 108.4135 108.2789 108.1683 
[3,] 1253980800 104.1059 103.2223 102.5102 102.0592 101.9324 102.1317 
[4,] 1254024000 104.7609 104.5823 104.3817 104.2230 104.1266 104.0673 

我希望在一個年度&月供一些分析來劃分數據幀。我認爲有很多方法可以做到這一點。我不知道哪一個更適合這種情況。任何人都可以幫忙嗎?我不想使用任何軟件包,並希望嘗試使用基本的R函數,因爲它可以幫助我更好地理解R。

+1

查看'xts'和'zoo'包。 – Fernando

回答

1

cbind和對其所有輸入執行共同的class。例如:

cbind(character=letters[1:5],numeric=seq(1:5)) 

作爲

 character numeric 
[1,] "a"  "1"  
[2,] "b"  "2"  
[3,] "c"  "3"  
[4,] "d"  "4"  
[5,] "e"  "5" 

這裏numeric輸入被轉換爲character,以匹配1.

相同的行爲被觀測到在塔的class

使用cbind:

cbind(date=seq(from=as.POSIXct("2009-9-25 18:00", tz="cet"),by="12 hours", length.out=5),Variable=seq(1:5)) 

輸出:

  date Variable 
[1,] 1253894400  1 
[2,] 1253937600  2 
[3,] 1253980800  3 
[4,] 1254024000  4 
[5,] 1254067200  5 

使用data.frame:

data.frame(date=seq(from=as.POSIXct("2009-9-25 18:00", tz="cet"),by="12 hours", length.out=5),Variable=seq(1:5)) 

輸出

    date Variable 
1 2009-09-25 18:00:00  1 
2 2009-09-26 06:00:00  2 
3 2009-09-26 18:00:00  3 
4 2009-09-27 06:00:00  4 
5 2009-09-27 18:00:00  5 

你Ç的使用時間序列包如XTS通過時間幀到子集:從data.frame

轉換到XTS

時間索引進入order.by和數據作爲第一輸入的其餘部分。

test.df<-data.frame(date=seq(from=as.POSIXct("2009-9-25 18:00", tz="cet"),by="12 hours", length.out=200),Variable=seq(1:200)) 
test.xts<-xts(test.df[,-1],order.by=test.df[,1]) 

子集

endpoints根據供選擇on=daysmonthsyears輸入給人的時間指標,

test.xts[endpoints(test.xts,on="years",k=1),] 
        [,1] 
2009-12-31 17:00:00 195 
2010-01-03 05:00:00 200 

test.xts[endpoints(test.xts,on="months",k=1),] 
        [,1] 
2009-09-30 18:00:00 11 
2009-10-31 17:00:00 73 
2009-11-30 17:00:00 133 
2009-12-31 17:00:00 195 
2010-01-03 05:00:00 200 
+0

感謝您的詳細回覆@Vivek。但我不明白需要提取每月/每年的終點。這是將數據集分成月份/年份的開始步驟嗎? – user3420448

相關問題