1

The problem: (1) identify the date of the first instance of "O" and then (2) identify the first instance of of "A" after the given "O" (3) to calculate difference in time using difftime. (similar to: Time Calculation Between Specific Events)

The issue specifically is with (2), identifying the first instance of "A" after the given "O".

Data frame (df) with columns Date and Event looks like this:

"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"

For example, the first "O" occurs at 2000-09-12 and the first "A" after it occurs at 2000-09-25.

As for the code: this correctly identifies first instance of "O"

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

but this incorrectly identifies the first "A" of df, not the first one after "O"

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

and this identifies the instance of "A" that is the (## of each "O")th of the set

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"....

I just need help writing this conditional to find the first A after the given "O" in order for difftime to give the correct number of days.

Community
  • 1
  • 1
Kirsten
  • 31
  • 3

1 Answers1

1

This does not require the dates to be sorted

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
manotheshark
  • 4,297
  • 17
  • 30