В этом посте ( Как добавить переменную, которая оценивает долю дней, которые кто-то видел с первого раза ) Я спросил что-то с аналогичной конечной целью, но здесь датафрейм совершенно другой.
Здесь df1
суммирует в час (Datetime
) количество раз, которое определенное животное (ID
) было замечено (Times_seen_per_hour
) в пределах определенной области интереса.Поскольку мы знаем, находилось ли животное в этой области в этот час, мы также создали столбец Presence
, который указывает, находилось ли животное в той области, где мы можем его обнаружить.
Я хочу знать долю часов, в течение которых животное было обнаружено, относительно общего количества часов, в течение которых, как мы знаем, животное находилось в этой области.
Вот пример того, что у меня сейчас:
df1<- data.frame(Datetime= ymd_hms(c("2019-05-20 12:00:00","2019-05-20 12:00:00","2019-05-20 13:00:00","2019-05-20 13:00:00","2019-05-20 14:00:00","2019-05-20 14:00:00","2019-05-20 15:00:00","2019-05-20 15:00:00","2019-05-20 16:00:00","2019-05-20 16:00:00","2019-05-20 17:00:00","2019-05-20 17:00:00","2019-05-20 18:00:00","2019-05-20 18:00:00","2019-05-20 19:00:00","2019-05-20 19:00:00")),
ID= c(1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2),
Times_seen_per_hour=c(3,0,0,4,2,1,3,2,1,0,0,0,7,0,4,1),
Presence= c(TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE))
df1
Datetime ID Times_seen_per_hour Presence
1 2019-05-20 12:00:00 1 3 TRUE
2 2019-05-20 12:00:00 2 0 FALSE
3 2019-05-20 13:00:00 1 0 TRUE
4 2019-05-20 13:00:00 2 4 TRUE
5 2019-05-20 14:00:00 1 2 TRUE
6 2019-05-20 14:00:00 2 1 TRUE
7 2019-05-20 15:00:00 1 3 TRUE
8 2019-05-20 15:00:00 2 2 TRUE
9 2019-05-20 16:00:00 1 1 TRUE
10 2019-05-20 16:00:00 2 0 FALSE
11 2019-05-20 17:00:00 1 0 TRUE
12 2019-05-20 17:00:00 2 0 FALSE
13 2019-05-20 18:00:00 1 7 TRUE
14 2019-05-20 18:00:00 2 0 TRUE
15 2019-05-20 19:00:00 1 4 TRUE
16 2019-05-20 19:00:00 2 1 TRUE
Как уже упоминалось, мне нужно создать новую переменную под названием Prop_hours_seen
, которая указывает долю часов, в течение которых животное было замечено, по отношению к общему количеству часов, которые, как мы знаем, было там (Presence == TRUE
).
Я бы ожидал этого:
> df1
Datetime ID Times_seen_per_hour Presence Prop_hours_seen
1 2019-05-20 12:00:00 1 3 TRUE 1.00 # We divide number of hours seen between total number of hours it could have been seen, that is 1/1.
2 2019-05-20 12:00:00 2 0 FALSE NA # We don't consider this hour since the animal wasn't in our area of interest.
3 2019-05-20 13:00:00 1 0 TRUE 0.50 # We divide number of hours seen (it was seen 1 hour) between total number of hours it could have been seen (it could have been seen at 12:00:00 and at 13:00:00), that is 1/2=0.5.
4 2019-05-20 13:00:00 2 4 TRUE 1.00
5 2019-05-20 14:00:00 1 2 TRUE 0.66
6 2019-05-20 14:00:00 2 1 TRUE 1.00
7 2019-05-20 15:00:00 1 3 TRUE 0.75
8 2019-05-20 15:00:00 2 2 TRUE 1.00
9 2019-05-20 16:00:00 1 1 TRUE 0.80
10 2019-05-20 16:00:00 2 0 FALSE NA
11 2019-05-20 17:00:00 1 0 TRUE 0.66
12 2019-05-20 17:00:00 2 0 FALSE NA
13 2019-05-20 18:00:00 1 7 TRUE 0.71
14 2019-05-20 18:00:00 2 0 TRUE 0.75
15 2019-05-20 19:00:00 1 4 TRUE 0.75
16 2019-05-20 19:00:00 2 1 TRUE 0.80
Я знаю, что это сложно понять, кто-нибудь знает, как это сделать?