У меня есть время для данных о событиях, с которыми я работаю. Я хотел бы отфильтровать данные с первого раза, когда субъект находится в исследовании, до первого наблюдаемого события (не беспокоиться о повторяющихся событиях, которые произошли после первого события - только хочу изучить время до первого события).
Я использую between
в функции filter
, которая всегда работала для меня в прошлом, но имеет проблемы здесь, потому что есть некоторые субъекты, у которых никогда не было события, и, таким образом, я получаю ошибку, которая заявляет Error: Expecting a single value: [extent=0].
Я думаю, что мне нужен метод фильтрации данных для субъекта от начала входа в исследование до времени первого события ИЛИ, если нет события субъекта, все данные для субъекта.
Вот пример того, как выглядят мои данные:
## data
subject <- c("A", "A", "A", "A", "B", "B", "C", "C", "C", "D", "E", "E", "E", "E", "E", "F", "F", "F", "F", "F")
event <- c(0,0,1,0,0,0,0,0,1,0,0,1,0,1,1,0,0,0,0,0)
df <- data.frame(subject, event)
## create index to count the days the subject is in the study
library(tidyverse)
df <- df %>%
group_by(subject) %>%
mutate(ID = seq_along(subject))
df
# A tibble: 20 x 3
# Groups: subject [6]
subject event ID
<fct> <dbl> <int>
1 A 0 1
2 A 0 2
3 A 1 3
4 A 0 4
5 B 0 1
6 B 0 2
7 C 0 1
8 C 0 2
9 C 1 3
10 D 0 1
11 E 0 1
12 E 1 2
13 E 0 3
14 E 1 4
15 E 1 5
16 F 0 1
17 F 0 2
18 F 0 3
19 F 0 4
20 F 0 5
## filter event times between the start of the trial and when the subject has the event for the first time
df %>%
group_by(subject) %>%
filter(., between(row_number(),
left = which(ID == 1),
right = which(event == 1)))
В последней части моя ошибка возникает.