我有这样的数据:
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))
现在我想
summary_data
基于
block
。
的行数
summary_data
是的类型数
interval_block
。
步骤1:
# Step 1: Find the maximum number of types for block column within each interval_block
max_types <- sapply(unique(data$interval_block), function(interval) {
blocks <- unique(data[data$interval_block == interval, "block"])
length(blocks)
})
max_num_types <- max(max_types)
对于
间隔_块
=1,有一种类型的块。(2)
对于
间隔_块
=2,有三种类型的块。(3、4和5)
对于
间隔_块
=3,有两种类型的块。(6和7)
对于
间隔_块
=4,有一种类型的块。(7)
因此,的最大类型数
块
每个内的列
间隔_块
是3。上面是计算这个数字的代码。根据这个数字,我想
dur_
列。所以,在这种情况下,应该有
dur_1
,
dur_2
和
dur_3
。
第2步:
决定的值
dur_
列。
对于
间隔_块
=1,有一种类型
块
。
我想填充
dur_1
然后离开
dur_2
和
dur_3
作为0。
#(
块
=2以内
间隔_块
=1)=3。所以,我想填充
dur_1
为3乘以10=30。
对于
间隔_块
=2,有三种类型
块
。
我想填充
dur_1
,
dur_2
和
dur_3
。
#(
块
=3以内
间隔_块
=2)=1,
#(
块
=4以内
间隔_块
=2)=1,
#(
块
=5以内
间隔_块
=2)=1。
所以,我想填补
dur_1
作为1乘以10=10,
dur_2
为1乘以10=10并且
dur_3
为1乘以10=10。
对于
间隔_块
=3,有两种类型
块
。
我想填充
dur_1
,
dur_2
然后离开
dur_3
作为0。
#(
块
=6以内
间隔_块
=3)=2,
#(
块
=7以内
间隔_块
=3)=1,
所以,我想填补
dur_1
作为2乘以10=20,
dur_2
为1乘以10=10并且
dur_3
作为0。
对于
间隔_块
=4,有一种类型
块
。
我想填充
dur_1
然后离开
dur_2
和
dur_3
作为0。
#(
块
=7以内
间隔_块
=4)=3。
所以,我想填补
dur_1
作为3乘以10=10,
dur_2
和
dur_3
作为0。
我描述了很长时间的规则,但基本上都是关于计算
间隔_块
并乘以10。
我的预期输出应该是这样的:
summary_data<-data.frame(dur_1=c(30,10,20,30),
dur_2=c(0,10,10,0),
dur_3=c(0,10,10,0),
interval_block=c(1,2,3,4))
我不知道如何用R编码。
请澄清。
第一排:有3个
块
=2(一种类型)。Sine one type,we only fill
dur_1
其中3乘以10。
第二排,有1个
块
=3,1
块
=4和1
块
=5(三种类型)。由于有三种类型,我们填充
dur_1
,
dur_2
和
dur_3
分别为1乘以10、1乘以10和1乘以10。
第三排:
有2个
块
=6,1
块
=7(两种类型)。由于有两种类型,我们填充
dur_1
,
dur_2
分别为2乘以10、1乘以10。