2012-01-31 20 views

答えて

15

は私がやるだろうと何:

library(xts) 
data(sample_matrix) 
sample.xts <- as.xts(sample_matrix, descr='my new xts object') 
x <- sample.xts['2007'] 
x[!weekdays(index(x)) %in% c("Saturday", "Sunday")] 

EDIT: ジョシュア・ウルリッヒコメントで抽出する.indexwday()、組み込みのアクセス関数のファミリの1つを使用して、よりよい解決策を指摘xtsクラスオブジェクトのインデックスの部分。また、ダークEddelbuettelのソリューションのように、次は、ロケールに依存する必要があります:

x[.indexwday(x) %in% 1:5] 
+2

私は基本的に同じ答えを示すが、使用されるロケールの、それが独立してレンダリングした数値平日に頼ります。 –

+9

+1 '.indexwday'関数があるので、最後の行は' x [.indexwday(x)%in%1:5] 'となります。 –

+0

@DirkEddelbuettelそれを指摘してくれてありがとう(そして+1 chez vous)。私はそうでなければ違いを理解していないでしょう。 –

6

日付を指定した曜日を計算し、サブセットする。この例ではDateタイプを使用しますが、POSIXltへのキャストはPOSIXctの日中のタイムスタンプと同じように動作します。

> mydates <- Sys.Date() + 0:6 
> mydates 
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-04" 
+ "2012-02-05" "2012-02-06" 
> we <- sapply(mydates, function(d) { as.POSIXlt(d)$wday}) %in% c(0, 6) 
> we 
[1] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE 
> mydates[ ! we ] 
[1] "2012-01-31" "2012-02-01" "2012-02-02" "2012-02-03" "2012-02-06" 
>  

これは実際にはxtsの質問ではなく、基本的な日付の処理です。ここで

関連する問題