在R中使用带有difftime的条件语句

时间:2017-03-15 19:51:48

标签: r date conditional difftime

问题:(1)确定第一个实例的日期" O"然后(2)识别" A"的第一个实例。在给定的" O" (3)使用difftime计算时间差。 (类似于:Time Calculation Between Specific Events

具体问题是(2),确定" A"的第一个实例。在给定的" O"。

之后

包含日期和事件列的数据框(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-09-12和第一个" A"之后发生在2000-09-25。

至于代码: 这正确地识别了" O"

的第一个实例
df$Date[df$Event=="O"] [1]
"2000-09-12" #correct

但这错误地识别出第一个" A" df,而不是" O"

之后的第一个
df$Date[df$Event=="A"] [1]
"2000-09-12" ##WRONG, correct == "2000-09-25"

这标识了" A"的实例。这就是集合

中每个" 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给出正确的天数。

1 个答案:

答案 0 :(得分: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