2017-03-15 88 views
0

問題:(1)確定「O」的第一個實例的日期,然後(2)在給定的「O」(3)之後標識「A」的第一個實例用difftime計算時間差。 (類似於:Time Calculation Between Specific Events在R中使用帶有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-09-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」表示的是(每個「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

如果您發現將O後切片數據集,然後搜索阿? –

+0

'df $ Date [df $ Event ==「A」&df $ Date> = df $ Date [df $ Event ==「O」] [1]] [1]' – HubertL

+0

HubertL,謝謝!這正是我需要它做的。 – Kirsten

回答

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