通过主题ID计算运行长度序列和最大值

我们有时间序列数据,其中对多个对象进行了重复观察。我想计算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

如果有人想出一种方法可以做到这一点,我将非常感激。

马克·米勒

我认为这可以回答您的第一个问题:

aggregate(positive ~ id, data = test, FUN = sum)

  id positive
1  1        7
2  2        4
3  3        4

这可能会回答您的第二个问题,但我需要查看每个id检查的预期结果

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')

test$group <- paste(test$id*10, test$positive, sep='')

my.seq <- data.frame(rle(test$group)$lengths)
test$first <- unlist(apply(my.seq, 1, function(x) seq(1,x)))
test$last  <- unlist(apply(my.seq, 1, function(x) seq(x,1,-1)))

test$max <- ifelse(test$last == 1 & test$positive==1, test$run, 0)
test

   id positive run run_positive episode group first last max
1   1        0   1            0       0   100     1    1   0
2   1        1   1            1       1   101     1    5   0
3   1        1   2            2       0   101     2    4   0
4   1        1   3            3       0   101     3    3   0
5   1        1   4            4       0   101     4    2   0
6   1        1   5            5       0   101     5    1   5
7   1        0   1            0       0   100     1    2   0
8   1        0   2            0       0   100     2    1   0
9   1        1   1            1       1   101     1    2   0
10  1        1   2            2       0   101     2    1   2
11  2        1   3            3       0   201     1    2   0
12  2        1   4            4       0   201     2    1   4
13  2        0   1            0       0   200     1    1   0
14  2        1   1            1       1   201     1    1   1
15  2        0   1            0       0   200     1    1   0
16  2        1   1            1       1   201     1    1   1
17  2        0   1            0       0   200     1    4   0
18  2        0   2            0       0   200     2    3   0
19  2        0   3            0       0   200     3    2   0
20  2        0   4            0       0   200     4    1   0
21  3        0   5            0       0   300     1    5   0
22  3        0   6            0       0   300     2    4   0
23  3        0   7            0       0   300     3    3   0
24  3        0   8            0       0   300     4    2   0
25  3        0   9            0       0   300     5    1   0
26  3        1   1            1       1   301     1    4   0
27  3        1   2            2       0   301     2    3   0
28  3        1   3            3       0   301     3    2   0
29  3        1   4            4       0   301     4    1   4
30  3        0   1            0       0   300     1    1   0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算熊猫中连续值组的最大运行长度

来自分类Dev

如何计算R中不同时间序列长度上的最大值和最小值之间的差异?

来自分类Dev

如何在SQL Server中计算序列中组的最小值和最大值?

来自分类Dev

计算最大序列长度

来自分类Dev

SAS通过ID保留最大值

来自分类Dev

SAS通过ID保留最大值

来自分类Dev

计算最大值

来自分类Dev

获取列和ID的最大值

来自分类Dev

MongoDB最大值查询和_id

来自分类Dev

非零值的总和运行长度

来自分类Dev

如何计算到目前为止在序列中看到的最大值或最小值及其关联的ID?

来自分类Dev

时间序列 Mathematica 最大值和最小值

来自分类Dev

计算向量的“正在运行”最大值

来自分类Dev

pyspark通过窗口迭代计算累计最大值

来自分类Dev

在Java中计算最小值和最大值?

来自分类Dev

Elasticsearch-通过重新计算平均值,最小值和最大值来连接文档

来自分类Dev

按组和时间“窗口”计算最大值

来自分类Dev

计算的熊猫列的最大值和0

来自分类Dev

同时计算最大值和总和

来自分类Dev

计算逐行最大值

来自分类Dev

通过ID查找结果集中的最大值

来自分类Dev

MSSQL通过ID从多个列中获取最大值

来自分类Dev

通过 id 从对象数组中获取属性的最大值

来自分类Dev

字段长度 > 最大值

来自分类Dev

显示最大值和附加的 ID 号

来自分类Dev

从最大值给出ID

来自分类Dev

SSRS计算值或最大值

来自分类Dev

用值计算行数(最大值)

来自分类Dev

计算去年观测值的最大值