我有一系列觀察描述動物是否以及何時在特定區域發現。以下樣本表標識了白天何時看到某隻動物(status == 1
)或不是(status == 0
)。在羣組首次發生事件之前選擇行
id date status
1 1 2014-06-20 1
2 1 2014-06-21 1
3 1 2014-06-22 1
4 1 2014-06-23 1
5 1 2014-06-24 0
6 2 2014-06-20 1
7 2 2014-06-21 1
8 2 2014-06-22 0
9 2 2014-06-23 1
10 2 2014-06-24 1
11 3 2014-06-20 1
12 3 2014-06-21 1
13 3 2014-06-22 0
14 3 2014-06-23 1
15 3 2014-06-24 0
16 4 2014-06-20 1
17 4 2014-06-21 0
18 4 2014-06-22 0
19 4 2014-06-23 0
20 4 2014-06-24 1
使用data.table
包,我能夠識別的第一天在該地區的動物不再被視爲:
library(data.table)
dt <- as.data.table(df)
dt[status == 0, .SD[1], by = id]
id date status
1: 1 2014-06-24 0
2: 2 2014-06-22 0
3: 3 2014-06-22 0
4: 4 2014-06-21 0
雖然上表中是有用的,我想知道如何操作該功能可以在首次出現動物缺席之前查找日期。換句話說,我想知道每隻動物在臨時離開前的最後一天。
我的實際數據集根據具體情況(例如存在/缺失3小時間隔,6小時等),將這些存在/不存在觀察結果分爲不同的時間長度。因此,訪問前一行會比較容易,而不是從每個值中減去時間間隔,因爲它總是在變化。我期望的輸出將是以下幾點:
id date status
1: 1 2014-06-23 1
2: 2 2014-06-21 1
3: 3 2014-06-21 1
4: 4 2014-06-20 1
請隨意使用base
代碼或其他程序包(即dplyr
)來回答這個問題,我始終保持對新事物。感謝您的時間!
謝謝您的解決方案和參考。這非常有幫助! – ccapizzano