使用R,我试图计算每个个体,其中该持续时间超过特定阈值所花费的时间的总持续时间。如何计算多次跨越阈值的浓度总时间?
例如,在图中下面我有3名受试者(ID)的浓度数据,我想找到的时间(x轴)花费上方的蓝色虚线为每个单独的。该数据集的结构会是这样的:
head(dataset)
ID time CP
1 1 0.0 0.00000000
2 1 0.0 0.00000000
3 1 0.5 0.03759806
4 1 1.0 0.12523455
5 1 1.5 0.23483219
6 1 2.0 0.34820905
Solid lines represent the concentrations for 3 different subjects
我试着用下面的代码:
library(data.table)
TAbove<-setDT(dataset)[CP > .05, diff(range(time)), by = ID]
但是,此代码,它从上面的第一上升计算的持续时间蓝色虚线到最后一滴。例如,对于绿线ID,请参阅黑线。
我怎么可以编写考虑到了浓度下降虚线下方的时间,排除他们的代码。最终的结果将是蓝色虚线以上的所有时间的总持续时间。像下面
见'?rle'。暂时忽略的多个ID,具有,比如说,'X = SIN(SEQ(-3 * PI,3 * PI,0.1))'和计算的r = RLE(X>阈值)',起始和结束位置连续'TRUE's(即'X> threshold')是'S = cumsum(C(1,R $长度))[R $值]''和E = 1 + R $长度[R $值] - 1'。总结'time [e] - time [s]'应该给出'x> threshold'的总时间。 –