4

同様の質問が見つからなかったので、他の誰かに役立つかもしれないし、議論を生み出すかもしれないと思った. 私が行ったいくつかの処理の迅速かつ汚い検証のために、いくつかの毎日のデータをランダムにサンプリングしたかったのです。問題は、開始日と終了日の間隔が与えられた場合、その間隔でランダムな日付のベクトルをどのように計算するかということです。

4

4 に答える 4

6

簡単なオプションの 1 つは、必要な日付のセットを生成し、sample()それらから通常の方法で生成することです。

Start <- as.Date("2013-01-01")
End <- as.Date("2013-01-31")
dates <- seq(from = Start, to = End, by = 1)

set.seed(1)
draw1 <- sample(dates, 5)
draw2 <- sample(dates, 5)

> draw1
[1] "2013-01-09" "2013-01-12" "2013-01-17" "2013-01-26"
[5] "2013-01-06"
> draw2
[1] "2013-01-28" "2013-01-29" "2013-01-20" "2013-01-18"
[5] "2013-01-02"

すべての日付を生成する必要があるため、間隔が長い場合は最も効率的ではないかもしれませんが、コードは非常にきれいで、意味を簡単に検索できます。

于 2013-01-07T18:16:35.053 に答える
5

私は使うだろうsample

dates <- Sys.Date() - 20:1
sample(dates)
于 2013-01-07T18:09:54.647 に答える
4

私は使用しますsample.int

Start <- as.Date("2013-01-01")
End <- as.Date("2013-01-31")
Samp <- Start + sample.int(End-Start, 5)
于 2013-01-07T18:31:30.047 に答える
0

これが私が思いついたものです:

as.Date("1979-01-01") + 
  runif( 10, 
    max=as.integer( 
      as.Date( "2012-12-31") - 
        as.Date( "1979-01-01")))

[1] "1997-03-07" "2009-01-11" "1983-02-04" "1999-11-11" "2006-03-26"
[6] "2005-06-04" "2001-03-18" "1994-09-17" "1995-11-28" "1985-04-19"

もちろん、これは、出力ベクトルの開始日、終了日、および長さをパラメーター化する関数として簡単にまとめることができます。これの強みは、基本関数のみを使用することです。欠点は、それが丸一日しかないことかもしれません。より高い解像度が必要な場合は、より複雑なものが必要です。

于 2013-01-07T18:07:25.577 に答える