6

start開始日と最終日を知っていますmaturity。週末の日付を考慮せずにベクトルに日付を入力するにはどうすればよいですか? たとえば、次のように言いましょう。

> start = as.Date("2013-02-28");
> maturity = as.Date("2013-03-07");

結果として次のベクトルを取得したいと思います。

results
[1] "2013-03-01" "2013-03-04" "2013-03-05" "2013-03-06" "2013-03-07"



> start = as.Date("2013-02-28");
> maturity = as.Date("2013-03-07");
> x <- seq(start,maturity,by = 1)
> x
[1] "2013-02-28" "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05"
[7] "2013-03-06" "2013-03-07"
> x <- x[!weekdays(x) %in% c('Saturday','Sunday')]
> x
[1] "2013-02-28" "2013-03-01" "2013-03-02" "2013-03-03" "2013-03-04" "2013-03-05"
[7] "2013-03-06" "2013-03-07"

同じ結果... ?

4

2 に答える 2

10

複数のパッケージのさまざまな機能を使用してこれを行うには、おそらく 10 億通りの方法があります。しかし、私が最初に考えたのは、単純にシーケンスを作成してから、週末を削除することです。

x <- seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1)
x <- x[!weekdays(x) %in% c('Saturday','Sunday')]

この回答は、英語ベースのシステムでのみ有効です。たとえば、フランス語版では、'Saturday' と 'Sunday' は 'samedi' と 'dimanche' に翻訳する必要があります。

于 2013-02-28T15:54:35.867 に答える
4

これは@joran answer :)よりも人間的ではありませんが、依存する現地時間ではありません

dd <- seq(as.Date('2011-01-01'),as.Date('2011-12-31'),by = 1)
dd[! (as.POSIXlt(dd)$wd %in% c(0,1))]

PS:別のオプションは、適用する前にローカルを設定することですweekdays

tt <- Sys.getlocale('LC_TIME')
Sys.setlocale('LC_TIME','ENGLISH')
dd <- dd[!weekdays(x) %in% c('Saturday','Sunday')]
Sys.setlocale('LC_TIME',tt)
于 2013-02-28T15:58:09.313 に答える