У нас есть данные временных рядов, в которых были измерены повторные наблюдения за несколькими субъектами. Я хотел бы рассчитать количество случаев, когда переменная positive == 1
встречается для каждого субъекта (переменная id
).
Вторая цель состоит в том, чтобы определить максимальную длину этих серий последовательных наблюдений, в которых positive == 1
. Для каждого предмета, вероятно, будет несколько запусков в течение периода исследования. Вместо того, чтобы подсчитывать максимальное количество последовательных положительных наблюдений на субъекта, я хотел бы рассчитать максимальную продолжительность цикла внутри отдельного цикла.
Вот игрушечный набор данных, который иллюстрирует проблему:
set.seed(1234)
test <- data.frame(id = rep(1:3, each = 10), positive = round(runif(30,0,1)))
test$run <- sequence(rle(test$positive)$lengths)
test$run_positive <- ifelse(test$positive == '0', '0', test$run)
test$episode <- ifelse(test$run_positive == '1', '1', '0')
count(test$episode)
x freq
1 0 25
2 1 5
Приведенный выше код приближается к ответу на мой первый вопрос, в котором я пытаюсь подсчитать количество положительных эпизодов, однако это не зависит от темы. Это приводит к нежелательному эффекту подсчета последнего наблюдения субъекта № 1 и первого наблюдения субъекта № 2 в одном и том же цикле. Может ли кто-нибудь помочь мне разработать код, чтобы обусловить эту кодировку длины цикла по теме?
Во-вторых, как можно извлечь только максимальную длину прогона для каждого прогона, в котором positive == 1
? Я хотел бы добавить дополнительный столбец, в котором записываются только наблюдения, в которых максимальная длина пробега. Для субъекта №1 это будет выглядеть так:
id positive run run_positive episode max_run
1 1 0 1 0 0 0
2 1 1 1 1 1 0
3 1 1 2 2 0 0
4 1 1 3 3 0 0
5 1 1 4 4 0 0
6 1 1 5 5 0 5
7 1 0 1 0 0 0
8 1 0 2 0 0 0
9 1 1 1 1 1 0
10 1 1 2 2 0 2
Если кто-то может придумать способ сделать это, я был бы очень благодарен.
with(test, table(id, positive))
- person Henrik   schedule 07.09.2013with(test, table(id, positive))
, довольно близок. Единственная проблема заключается в том, что он суммирует все прогоны для каждого пациента, тогда как я хотел бы однозначно определить продолжительность каждого прогона по субъекту. Поэтому вместо того, чтобы сообщать, что ID#1 имеет 7 положительных результатов, было бы идеально сказать, что ID#1 имеет 2 серии длин 5 и 2. Затем я хотел бы обернуть этот вывод вtest
и дополнить его ведущими нулями. - person Entropy   schedule 07.09.2013