2011-02-06 41 views
3

我希望做一些時間序列數據的概率分佈。我的數據採用以下格式R地塊密度平滑時間序列

00:00, 3 
01:00, 50 
05:00, 13 
10:00, 34 
17:00, 80 
21:00, 100 

時間列有一些R必須內插的缺失值。我想獲得一個很好的平滑曲線來突出繁忙時段。我已經嘗試過ts,densityplot,但這些不會產生我所追求的。例如,

data1 <- read.csv(file="c:\\abc\\ts.csv", head=FALSE, sep=",") 
data1$V1 <- strptime(data1$V1, format="%H:%M") 
plot(data1$V2, density(data1$V1), type="l") 

但是,這給了我以瘋狂的順序和概率分佈繪製的線。

回答

2

我認爲你肯定是在包zoo之後,它有幾個功能來處理NA。也參見na.aggregatena.approxna.locf

+0

NA代表什麼?無法在網上找到它,我的搜索條件suck:r,zoo,na – 2011-03-16 21:40:30

2

你做得比你想象的要難一些。通過在時間前添加日期,我現在可以更輕鬆地完成。

此外,我添加了一個變量「texinp」和一個textConnection()語句,以便您可以剪切/粘貼以下代碼並直接運行它。數據被加載到變量texinp中,並通過read.zoo語句讀取,類似於讀取.csv文件。現在,這將允許您繪製事情,並讓您瞭解如何使用read.zoo讀取.csv文件。

library(zoo) 
library(chron) 

texinp <- " 
Time, Mydata 
2011-02-06 00:00, 3 
2011-02-06 01:00, 50 
2011-02-06 05:00, 13 
2011-02-06 10:00, 34 
2011-02-06 17:00, 80 
2011-02-06 21:00, 100" 

myd.zoo <- read.zoo(textConnection(texinp), header=TRUE, FUN = as.chron, sep=",") 
myd.zoo 

plot(myd.zoo) 

從你的問題,你談到了 「繁忙時段」。我可能是錯的,但我假設在21:00時100的值是「最繁忙的時期」。如果這是真的,那麼你不需要密度圖,上面的圖就是你所追求的。

讓我知道如果我錯了。