采样恰好四个保持几乎相等的采样距离

时间:2014-04-18 14:18:46

标签: r sampling

我正在尝试为每年的预定访问生成预约时间。应该随机选择days=1:365和第一个约会first=sample(days,1,replace=F)

现在,在第一次约会时,我想在1:365之间的空间中再生成3个约会,这样在1:365空间中将有4个约会,并且它们之间的间隔相等。

我试过了

point<-sort(c(first-1:5*364/4,first+1:5*364/4 ));point<-point[point>0 & point<365]

但它并不总是给我4个约会。我最终运行了很多次并且仅选择了4个约会的样本,但是我想问一下是否有一种更优雅的方式可以获得恰好距离可能的4个点。

2 个答案:

答案 0 :(得分:2)

在第一次约会开始的一年里,我一直在考虑相等的间距(约会之间大约91天)...基本上每年每季度有一次约会。

# Find how many days in a quarter of the year
quarter = floor(365/4)
first = sample(days, 1)
all = c(first, first + (1:3)*quarter)
all[all > 365] = all[all > 365] - 365
all
sort(all)

答案 1 :(得分:0)

这是你要找的吗?

set.seed(1)    # for reproducible  example ONLY - you need to take this out.
first <- sample(1:365,1)
points <- c(first+(0:3)*(365-first)/4)
points
# [1]  97 164 231 298

另一种方式使用

points <- c(first+(0:3)*(365-first)/3)

这会在[first, 365]上创建4个点,但最后一个点始终为365.

您的代码产生意外结果的原因是您使用first-1:5*364/4。这在第一次之前创建了点,其中一些点可以是&lt; 0.然后排除那些points[points>0...]