考虑到日期样本:
t_s<-seq(as.POSIXct("2010-01-01 00:00:00"), as.POSIXct("2010-12-31 23:00:00"), by = '1 day')和日期向量:
t<-seq(as.POSIXct("2010-02-01 00:00:00"), as.POSIXct("2010-2-10 23:00:00"), by = '1 day')现在,我希望在t_s中随机抽取日期,t.The中的元素的相同工作日的样本大小应该是每个t元素的4个。例如,第一个元素"2010-02-01"的示例可以是"2010-06-28" "2010-5-31" "2010-8-02" "2010-10-04",因为它们都是星期一。
从t_s采集的数据可能是多个,因为t中的一些日期共享同一个工作日。但是,如果t_s比t小得多(在示例中不是),则不能满足样本的唯一性。因此,有和不包含多and t_s日期的示例方法都是需要的。
我怎么能拿到这些样品?
发布于 2016-12-29 14:45:14
像这样的事情应该能满足你的需要
不更换
lapply(seq_along(t), function(x){
sample(t_s[weekdays(t_s)==weekdays(t[x])], 4, replace = FALSE)
})有替换
lapply(seq_along(t), function(x){
sample(t_s[weekdays(t_s)==weekdays(t[x])], 4, replace = TRUE)
})这些返回一个列表与您的样本。
不包括以前选定的日期
# Based on @lmo comment
ds <- c()
lapply(seq_along(t), function(x){
if(x == 1){ result <- sample(t_s[weekdays(t_s)==weekdays(t[x])], 4)
} else {
t_s2 <- t_s[!(t_s %in% ds)]
result <- sample(t_s2[weekdays(t_s2)==weekdays(t[x])], 4)
}
ds <<- c(ds, result)
result
})https://stackoverflow.com/questions/41381697
复制相似问题