2016-08-18 6 views
2

私は、19世紀に始まり20世紀に到達する日々の値を持つ時系列オブジェクトを持っています。そこには欠けている値がたくさんあります。データが欠落している時系列から毎週平均を計算するR

1900年2月13日[いくつかの値:最後の週、毎週平均値を返します

library(zoo) 
library(xts) 

# Create time series that starts in 19th century 
T <- 100 # number of days 
myTS <- xts(rnorm(T), as.Date(1:T, origin="1899-11-05")) 

# Insert some missing values 
myTS[4:7] <- NA 
myTS[33:34] <- NA 
myTS[67:87] <- NA 

# Try calculating weekly means 
weekData <- apply.weekly(myTS, colMeans, na.rm = TRUE) 

:私はここに毎週の手段を計算しようとしています

は、最小限の例です]私はいくつかの変数を持つ大規模データセット上で動作していますので、私はcolMeansだけではなくmeanを使用

を。

私はすべての週の平均を望みます。誰かが私が間違っていることを考えているのですか?更新

答えて

2

週年の組み合わせを使用するあなたのコメントに基づいて:

library(zoo) 
library(xts) 

# Create time series that starts in 19th century 
T <- 100 # number of days 
myTS <- xts(rnorm(T), as.Date(1:T, origin="1899-11-05")) 

# Insert some missing values 
myTS[4:7] <- NA 
myTS[33:34] <- NA 
myTS[67:87] <- NA 

# Let's use a flexible class 
myTS <- data.frame(dates=index(myTS),v1=myTS[,1]) 

# Here's an easy way to transform dates to weeks 
require(lubridate) 
week_num <- week(myTS[,1]) 
year_num <- year(myTS[,1]) 
week_yr <- paste(week_num, year_num) 

# Weekly means 
aggregate(myTS$v1,by=list(week_yr),mean,na.rm=T) 
Group.1   x 
1 1 1900 0.05405322 
2 2 1900 0.31981319 
3 3 1900   NaN 
4 4 1900   NaN 
5 45 1899 0.85081053 
6 46 1899 0.34064255 
7 47 1899 0.02880424 
8 48 1899 -0.34408119 
9 49 1899 -0.38089026 
10 5 1900 0.62292188 
11 50 1899 -0.59666955 
12 51 1899 0.57756987 
13 52 1899 -0.41325485 
14 53 1899 0.88013634 
15 6 1900 0.01514668 
16 7 1900 -0.50863942 
+0

申し訳ありませんが、私が望んでいたことはように、年を越えweek1の平均ではありません年間にわたるweek2と。しかし、私はこれらのすべての週の平均を別々にしたいと思います。 week1_1899、week2_1899、...、week52_1900、week53_1900です –

+0

@ ulima2_OK私はちょうどそのようにそれを更新しました –

+1

素晴らしい、その仕事をする! –

関連する問題