【发布时间】:2019-04-16 02:42:34
【问题描述】:
我正在尝试使用 R 从大型数据集中提取某些数据。这些数据来自一个经历了多个阶段的过程,比如说阶段 0 到 5。我有一个包含多个运行过程的数据集。
我正在尝试提取每次运行的数据。我想创建第一次出现阶段 0 到 5 的子集,然后创建另一个子集,再次出现阶段 0 到 5(第二次运行)。数据集仅包含按时间顺序排列的过程数据和阶段编号,它不知道它在哪个运行中。但是,阶段是按顺序排列的,因此阶段列从 0 到 5,然后又从 0 开始。
我已经尝试使用一些 while 和 for 循环来组织数据,但是在如此大的数据集(700 000 个条目)上这非常慢。即使使用只有 10000 个左右条目的一小部分也需要很长时间。
数据集可能看起来像这样(第二列是相位):
01, 0, 2, 4, 5, 3, 4,
02, 0, 3, 4, 5, 2, 2,
03, 0, 4, 5, 4, 9, 8,
04, 1, 8, 9, 2, 7, 3,
05, 1, 8, 7, 0, 7, 8,
06, 2, 8, 4, 9, 7, 8,
07, 2, 9, 7, 5, 0, 8,
08, 2, 8, 6, 5, 7, 9,
07, 2, 8, 7, 6, 7, 9,
08, 3, 7, 8, 6, 7, 9,
09, 3, 7, 9, 8, 7, 8,
10, 4, 5, 6, 7, 4, 3,
11, 4, 6, 7, 5, 6, 4,
12, 5, 6, 4, 3, 2, 2,
13, 0, 6, 3, 3, 2, 5,
14, 0, 5, 6, 3, 2, 2,
15, 1, 5, 2, 1, 4, 4,
请注意,每相的线数不是恒定的。
我希望从上面的例子中得到的子集是:
01, 0, 2, 4, 5, 3, 4,
02, 0, 3, 4, 5, 2, 2,
03, 0, 4, 5, 4, 9, 8,
04, 1, 8, 9, 2, 7, 3,
05, 1, 8, 7, 0, 7, 8,
06, 2, 8, 4, 9, 7, 8,
07, 2, 9, 7, 5, 0, 8,
08, 2, 8, 6, 5, 7, 9,
07, 2, 8, 7, 6, 7, 9,
08, 3, 7, 8, 6, 7, 9,
09, 3, 7, 9, 8, 7, 8,
10, 4, 5, 6, 7, 4, 3,
11, 4, 6, 7, 5, 6, 4,
12, 5, 6, 4, 3, 2, 2,
和
13, 0, 6, 3, 3, 2, 5,
14, 0, 5, 6, 3, 2, 2,
15, 1, 5, 2, 1, 4, 4,
(注意:在原始数据集中,阶段总是在 5 结束)
【问题讨论】: