Имеются данные временных рядов, в которых повторялись повторные наблюдения по нескольким предметам. Я хотел бы рассчитать количество случаев, в которых переменная positive == 1
возникает для каждого объекта (переменная id
).Вычислить длину и максимальную длину прогона по предмету 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
? Я хотел бы добавить дополнительный столбец, в котором записываются только наблюдения, в которых записывается максимальная длина пробега. Для Subject # 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
Если кто-то может придумать метод, чтобы сделать это, я был бы очень благодарен.
Я не» t понимайте свою «максимальную длину пробега для каждого прогона». Каждый пробег имеет _one_ length, поэтому «максимум» здесь не имеет смысла. По крайней мере, не для меня. Например, первый запуск для id 1, где положительный = 1 имеет длину 5. В пределах id, в течение прогона для положительного = 1, вы хотите наложить длину выполнения на начальные нули? – Henrik
Для первого вопроса вы можете попробовать 'с (test, table (id, positive))' – Henrik
Извините, если я использовал неправильную терминологию для описания того, что я искал. Вы правы, что я ищу «прокладку» длины пробега с ведущими нулями. Код, который вы указали в вашем примере 'с (test, table (id, positive)), довольно близок. Единственная проблема заключается в том, что он суммирует все прогоны вместе на пациента, тогда как я хотел бы однозначно определить длину прогона для каждого прогона по предмету. Поэтому вместо того, чтобы сообщать, что идентификатор №1 имеет 7 положительных результатов, было бы идеальным сказать, что идентификатор №1 имеет 2 пробега длиной 5 и 2. Затем я хотел бы обернуть этот вывод в 'test' и проложить его с помощью ведущего нули. – Entropy