R:生成一年中星期五日期的数据框

ada*_*888 3 r

我想生成一个包含全年所有星期五日期的数据框.有一个简单的方法吗?

例如2013年12月:(6/12/13,13/12/13,20/12/13,27/12/13)

谢谢您的帮助.

the*_*ail 7

我确信有一种更简单的方法,但你可以很容易地暴力破解它:

dates <- seq.Date(as.Date("2013-01-01"),as.Date("2013-12-31"),by="1 day")

dates[weekdays(dates)=="Friday"]
dates[format(dates,"%w")==5]
Run Code Online (Sandbox Code Playgroud)

基于@Frank 的出色工作,您可以找到两个日期之间的所有特定工作日,如下所示:

pick.wkday <- function(selday,start,end) {
  fwd.7 <- start + 0:6
  first.day <- fwd.7[as.numeric(format(fwd.7,"%w"))==selday]
  seq.Date(first.day,end,by="week")
}
Run Code Online (Sandbox Code Playgroud)

start并且end需要是Date对象,并且selday是您想要的星期几(0-6 代表周日至周六)。

即 - 对于当前查询:

pick.wkday(5,as.Date("2013-01-01"),as.Date("2013-12-31"))
Run Code Online (Sandbox Code Playgroud)


Jot*_*ota 5

这是一种方式.

d <- as.Date(1:365, origin = "2013-1-1")
d[strftime(d,"%A") == "Friday"]
Run Code Online (Sandbox Code Playgroud)

或者,这将是一种更有效的方法,用于为任意数量的星期五生成数据:

wk1 <- as.Date(seq(1:7), origin = "2013-1-1") # choose start date & make 7 consecutive days
wk1[weekdays(wk1) == "Friday"]                # find Friday in the sequence of 7 days

seq.Date(wk1[weekdays(wk1) == "Friday"], length.out=50, by=7) # use it to generate fridays
Run Code Online (Sandbox Code Playgroud)

by=7说去下周五. length.out控制要生成的星期五的数量.人们还可以to用来控制生成多少星期五(例如使用to=as.Date("2013-12-31")而不是length.out).