我们有时间序列数据,其中对几个受试者进行了重复观察。我想计算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
如果有人能想出一个方法来做到这一点,我将非常感激。