我在R中尝试以下内容。
我有一个带时间(小时)的数据框,第二列有零或一个。连续时间步长之间的时间间隔为1小时。如果我可以附加一个示例文件但不知道如何附加一个示例文件会更容易。我试图找出相隔24小时的1个1。 24小时内不止一个“1”被认为是“1”
假设一个计数器,cnt初始化为0。
我想将第二列中的每一行与24小时窗口中的第二列值进行比较。如果在任何24小时内有多个“1”,则表示该24小时窗口中有一个“1”。
在FORTRAN中,我会设置一个计数器,转到每个时间步,比较接下来24小时/时间步的值。如果找到“1”,对于第一个“1”将使计数器增加1.如果在相同的24小时内还有另一个“1”,我不会再增加计数器并移动到下一行并继续这样做,直到文件结束。
希望我可以解释我想要的东西。如果不清楚,请告诉我。认为可以通过match()函数或plyr包来完成某些事情,但无法找到。
答案 0 :(得分:1)
Bioconductor中的IRanges包可以在这里提供帮助。首先,计算大小为24的窗口的score
的运行总和。然后将总和上限设为1。
rs <- IRanges::runsum(score, 24)
pmin(rs, 1)
这就是你想要的吗?您可能想要使用endrule
参数。