我计划使用时间分层案例交叉方法设计一项研究,其中每个都是 案件作为他自己的控制。控制日必须相同 同月的工作日。如果一个人星期五住进了医院 某个月,那个月的所有其他星期五将是控制日。根据入学日期和月份,将有3或4个控制。
例如,如果一个人今天(2013年12月27日)入院,全部 12月的周五(6日,13日和20日)将进行控制,从而提供3个控制。 另一方面,如果另一名患者在2014年1月1日星期三的新年入院,则2014年1月的所有其他星期三(8,15,22和29)将成为控制日。
下面的dput显示了我目前拥有的事件日(event_date)和预期的控制日(指示日期)。 我怎么能设置这样的方案? Ť
structure(list(event_date = structure(c(12539, 12539, 12539,
12539, 12544, 12544, 12544, 12545, 12545, 12545, 12550, 12550,
12550, 12563, 12563, 12563, 12567, 12567, 12567, 12567, 14065,
14065, 14065), class = "Date"), referent_date = structure(c(12546,
12560, 12567, 12553, 12558, 12565, 12551, 12566, 12552, 12559,
12543, 12557, 12564, 12556, 12542, 12549, 12553, 12539, 12546,
12560, 14086, 14072, 14079), class = "Date")), .Names = c("event_date",
"referent_date"), class = "data.frame", row.names = c("1", "2",
"3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14",
"15", "16", "17", "18", "19", "20", "21", "22", "23"))
答案 0 :(得分:1)
如何使用来自lubridate的wday()和month()过滤候选日期?
require(lubridate)
compDates <- function(event_date) {
# to be comparable, reference dates must have the same month and wday as event
# but can't be exactly the same date
possible_refs <- as.Date((event_date - 30) : (event_date + 30),
origin="1970-01-01")
possible_refs[month(possible_refs)==month(event_date)
& wday(possible_refs)==wday(event_date)
& event_date != possible_refs]
}
some_event_dates <- structure(c(12539, 12544, 12545, 12550,
12563, 12567,14065), class = "Date")
some_event_dates
lapply(some_event_dates, compDates)
应提供所需的清单。