制作二进制模式并从 R 中的数据帧计算长度

问题描述 投票:0回答:0

我有一个

data
如下:

data<-data.frame(is.on=c("FALSE","FALSE","FALSE","TRUE","FALSE","TRUE","FALSE","FALSE","TRUE","TRUE","TRUE","TRUE"),
                 dur=c(10,20,30,10,10,10,10,20,10,20,30,40),
                 dt=c(10,10,10,10,10,10,10,10,10,10,10,10),
                 block=c(2,2,2,3,4,5,6,6,7,7,7,7),
                 interval_block=c(1,1,1,2,2,2,3,3,3,4,4,4))

is.on
是“真”或“假”。
TRUE
表示开关打开,
FALSE
表示开关关闭。每行是 10 秒的时间间隔。我想制作
summary_data
有 4 行基于
interval_block
.

Step1:确定模式

order
.

例如,对于

interval_block
=1,我们只看到
FALSE
。所以,我想将
order
表示为0。 对于
interval_block
=2,我们看到
TRUE
,
FALSE
,
TRUE
模式。所以,我想将
order
表示为 101.

Step2:计算

dur_1
dur_2
dur_3
.

dur_1
表示第一个模式的持续时间。
dur_2
表示第二个模式的持续时间。
dur_3
表示第三个模式的持续时间。

对于

interval_block
=1,
order
0
。因此,我可以将第一个模式
0
的持续时间计算为 3 乘以 10。所以
dur_1
是 30。第二个和第三个模式没有模式。所以,
dur_2
dur_3
是 0.

对于

interval_block
=2,
order
101
。对于 10 个 sencods,
TRUE
以及接下来的 10 秒,
FALSE
以及最后 10 秒,
TRUE
所以第一个、第二个、第三个模式的持续时间是 10,10 和 10.

预期的输出应该是这样的:

summary_data<-data.frame(dur_1=c(30,10,20,30),
                         dur_2=c(0,10,10,0),
                         dur_3=c(0,10,0,0),
                         order=c(0,101,01,1),
                         interval_block=c(1,2,3,4))
r dataframe sum pattern-matching
© www.soinside.com 2019 - 2024. All rights reserved.