的不平等,我想创建一个基于日期的三列的不平等0和1的列的0和1列。创建基于三个日期列
的想法如下。如果event_date
是death_date
或study_over
之前,所述列event
应== 1,如果发生event_date
death_date
或study_over
后,event
应== 0,这两种event_date
和death_date
可能包含的NA。
set.seed(1337)
rand_dates <- Sys.Date() - 365:1
df <-
data.frame(
event_date = sample(rand_dates, 20),
death_date = sample(rand_dates, 20),
study_over = sample(rand_dates, 20)
)
我的尝试是以下
eventR <-
function(x, y, z){
if(is.na(y)){
ifelse(x <= z, 1, 0)
} else if(y <= z){
ifelse(x < y, 1, 0)
} else {
ifelse(x <= z, 1, 0)
}
}
我用它通过以下方式
library(dplyr)
df[c(3, 5, 7), "event_date"] <- NA #there are some NA in .$event_date
df[c(3, 4, 6), "death_date"] <- NA #there are some NA in .$death_date
df %>%
mutate(event = sapply(.$event_date, eventR, y = .$death_date, z = .$study_over))
##Error: wrong result size (400), expected 20 or 1
##In addition: There were 40 warnings (use warnings() to see them)
我无法弄清楚如何做到这一点。有什么建议么?
你的描述似乎显得有些不一致(对我来说)*“death_date之前** **或study_over” *它的一个,而*“death_date后发生**或** study_over“*它是零。它有可能在death_rate之前,但在study_over之后?如果是这样,那么什么样的价值应该是采取 – user20650
@ user20650我无法弄清楚如何将其硬编码到函数。在后用df [is.na(事件), “事件”] <固定它 - 0。 – user6571411