2015-10-14 41 views
0

我是R新手,我正在嘗試使用預測庫使用GA連接進行一些預測。在R中指定時間系列

我有一個這樣的輸入數據:

day month year visits 
1 01 01 2013 21821 
2 02 01 2013 17865 
3 03 01 2013 25300 
4 04 01 2013 41184 
5 05 01 2013 48953 
6 06 01 2013 64135 

它吸引每月和每年的天訪問。

當我嘗試使用TS功能我是這樣的:

visits.ts = TS(ga.data $訪問,開始= C(2013,1),結束= C(2014,1)頻率= 12)

由於輸出是這樣的:

 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
2013 
2014 

這裏是我的question-我怎麼能分裂月至數天,創建這樣一個輸出:

 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
January 2013 
February 2013 
+0

所以我需要不創建預後一個月,但一天 – HalfPintBoy

+0

看到[評論](https://stackoverflow.com/questions/8437620/analyzing-daily-weekly-data-using-ts-in-r) - 你最好使用'動物園'或' xts'用於日常數據 – jeremycg

回答

1

首先創建一些測試數據,DF。 (今後請提供的測試數據。)

# create data set for testing 
tt0 <- seq(as.Date("2013-01-01"), as.Date("2014-12-31"), by = "day") 
lt <- as.POSIXlt(tt0) 
DF <- data.frame(year = lt$year + 1900, month = lt$mon + 1, day = lt$mday, visits = 1:730) 

下,關鍵取決於包含完全相同的天數(即沒有閏年)每年。幸運的是,問題中顯示的數據就是這種情況。使用DF其轉換爲"ts"類:

# convert to ts 
tser <- ts(DF$visits, start = 2013, freq = 365) 

如果我們確實有閏年,我們可能要使用從動物園包"zoo"類或"xts"類從XTS包。

對於第二個問題,第一附加一個year_month柱,然後使用dcast來創建2D顯示:

library(reshape2) 
DF2 <- transform(DF, year_month = I(sprintf("%d-%02d", year, month))) 
dcast(DF2, year_month ~ day, value.var = "visits") 

或使用as.yearmon從動物園包:

library(reshape2) 
library(zoo) 
DF2 <- transform(DF, year_month = as.yearmon(paste(year, month, sep = "-"))) 
dcast(DF2, year_month ~ day, value.var = "visits") 

,這裏是一個第三種選擇。這其中不使用任何外部包,雖然這是一個有點慢:

DF2 <- transform(DF, day = factor(day), year_month = sprintf("%d-%02d", year, month)) 
xtabs(visits ~ year_month + day, DF2, sparse = TRUE) 

省略sparse=TRUE它會更快,但將填補未使用的斑點0