1

问题:(1)识别“O”的第一个实例的日期,然后(2)在给定的“O”之后识别“A”的第一个实例(3)使用difftime计算时间差。(类似于:特定事件之间的时间计算

具体问题在于(2),在给定的“O”之后识别“A”的第一个实例。

包含日期和事件列的数据框 (df) 如下所示:

"Date"        "Event"

"2000-09-08"    "A"

"2000-09-11"    "N"

"2000-09-12"    "O"

"2000-09-13"    "O"

"2000-09-14"    "O"

"2000-09-15"    "O"

"2000-09-18"    "N"

"2000-09-19"    "N"

"2000-09-20"    "N"

"2000-09-21"    "N"

"2000-09-22"    "N"

"2000-09-25"    "A"

"2000-09-26"    "A"

"2000-09-27"    "A" 

"2000-09-28"    "A"

"2000-09-29"    "A"

"2000-10-02"    "A"

"2000-10-03"    "A"

例如,第一个“O”出现在 2000 年 9 月 12 日,之后的第一个“A”出现在 2000 年 9 月 25 日。

至于代码:这正确识别了“O”的第一个实例

df$Date[df$Event=="O"] [1]
"2000-09-12" #correct

但这错误地识别了df的第一个“A”,而不是“O”之后的第一个

df$Date[df$Event=="A"] [1]
"2000-09-12" ##WRONG, correct == "2000-09-25"

这标识了“A”的实例,它是集合的第(## of each "O")

df$Date[df$Event=="A"] [df$Event=="O"]

"2000-10-23" "2000-10-24" "2000-10-25" "2000-10-26" "2001-04-03" "2001-04-04" "2001-06-29"....

我只需要帮助编写这个条件来找到给定“O”之后的第一个 A,以便 difftime 给出正确的天数。

4

1 回答 1

1

这不需要对日期进行排序

date1 <- min(df$Date[df$Event == "O"])
date2 <- min(df$Date[df$Event == "A" & df$Date > date1])

difftime(date2, date1)
Time difference of 13 days
于 2017-03-15T21:21:47.330 回答