В этом сообщении (Как добавить переменную, которая оценивает долю дней, в течение которых кто-то был замечен с первого раза) Я спросил что-то с похожей конечной целью, но здесь фрейм данных совершенно другой.
Здесь 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
Я знаю, что это сложно понять, кто-нибудь знает, как это сделать?
Times_seen_per_hour
равно 0, а Присутствие равноTRUE
? Если это 0, разве это не должно бытьFALSE
? - person Sotos   schedule 08.07.2019Times_seen_per_hour
равно0
, аPresence
равноFALSE
, значит рыбы там не было. Но еслиTimes_seen_per_hour
это0
, аPresence
этоTRUE
, значит, он был там и мы его не видели. Так что я должен управлять этими вещами здесь, чтобы получить то, что я хочу... - person Dekike   schedule 08.07.201912:00:00
животное можно было увидеть в12:00:00
, поэтому общее количество часов, в течение которых животное можно было увидеть, равно1
. ДляID
числа1
в строке номер 3 в13:00:00
можно было увидеть два разных часа (в12:00:00
и в13:00:00
). Вы понимаете? В каждом ряду я учитываю время до, а не время после. - person Dekike   schedule 08.07.2019