首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何取样同一工作日的日期?

如何取样同一工作日的日期?
EN

Stack Overflow用户
提问于 2016-12-29 14:31:31
回答 1查看 76关注 0票数 0

考虑到日期样本:

代码语言:javascript
复制
t_s<-seq(as.POSIXct("2010-01-01 00:00:00"), as.POSIXct("2010-12-31 23:00:00"), by = '1 day')

和日期向量:

代码语言:javascript
复制
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_st小得多(在示例中不是),则不能满足样本的唯一性。因此,有和不包含多and t_s日期的示例方法都是需要的。

我怎么能拿到这些样品?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-29 14:45:14

像这样的事情应该能满足你的需要

不更换

代码语言:javascript
复制
lapply(seq_along(t), function(x){
  sample(t_s[weekdays(t_s)==weekdays(t[x])], 4, replace = FALSE)
})

有替换

代码语言:javascript
复制
lapply(seq_along(t), function(x){
  sample(t_s[weekdays(t_s)==weekdays(t[x])], 4, replace = TRUE)
})

这些返回一个列表与您的样本。

不包括以前选定的日期

代码语言:javascript
复制
# 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
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41381697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档