Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于不同行中的值之间的差异拆分数据帧_R_Split - Fatal编程技术网

R 基于不同行中的值之间的差异拆分数据帧

R 基于不同行中的值之间的差异拆分数据帧,r,split,R,Split,我不确定我是否以正确的方式实现了这一点,但我试图做的是根据值之间的差异将数据帧分成多个组。例如,使用下面的数据,我希望根据MIN列中的值之间的差异进行分割,因此如果差异大于2,则创建一个分割,在下面的示例中,我将得到4个分割的数据集 MIN SEC PT CO2R CO2D PAR 58 10 5 375.7 -11.6 1002 58 20 5 375.4 -11.6 1001 58 33 5 375.2 -11.6 1001 58

我不确定我是否以正确的方式实现了这一点,但我试图做的是根据值之间的差异将数据帧分成多个组。例如,使用下面的数据,我希望根据MIN列中的值之间的差异进行分割,因此如果差异大于2,则创建一个分割,在下面的示例中,我将得到4个分割的数据集

MIN SEC PT  CO2R    CO2D    PAR
58  10  5   375.7   -11.6   1002
58  20  5   375.4   -11.6   1001
58  33  5   375.2   -11.6   1001
58  43  5   375.2   -11.5   1000
58  54  5   375.3   -11.8   1000
2   0   5   375.5   -6.3    1001
2   8   5   375.3   -6  1000
2   21  5   375.2   -6.1    997
2   37  5   375.3   -6.2    993
2   51  5   375.4   -6.2    1003
5   20  5   376.3   -7.6    1000
5   35  5   376.1   -7.3    1000
5   52  5   375.9   -7.3    1000
6   5   5   376 -7.8    1000
6   23  5   376.1   -8  1002
10  2   5   376.3   -3.3    1003
10  14  5   376.3   -3.1    1003
10  27  5   376.5   -3.4    1003
10  41  5   376.7   -3.7    1006
10  55  5   376.8   -3.9    997
以前,当每个数据子集都有唯一的元素时,我使用了split函数,但是我在这个数据集中没有唯一的元素可以从中拆分。也许这个函数不是我需要的?任何提示,谢谢


谢谢,

您可以使用
diff
查找连续值之间的差异,并使用
split
拆分数据帧。假设您的数据帧被称为
dat

# create an index for differences > 2
idx <- c(0, cumsum(abs(diff(dat$MIN)) > 2))

# split the data frame
split(dat, idx)

你想做什么还不清楚。您的数据在MIN列中有4个唯一值。为什么
split()
不能正常工作?请发布预期结果。+1。我的想法是一样的。不清楚在拆分可能导致范围相隔超过2的情况下,OP希望做什么。例如,将当前dat$MIN替换为
c(58、59、59、60、60、61、62、2、2、5、5、5、6、6、10、10、10、10、10)
。第一组将包含58到62个,但我不确定这是否是他们想要的。@AnandaMahto同意,这个问题相当不清楚。如果OP能澄清在这些情况下该怎么做,我会改变答案。感谢您的快速回复。是的,我应该说得更清楚,抱歉。我使用一台机器进行手动测量,当收集数据时,它只对每个测量值应用1。通常我会进行5次测量并使用平均值,但是这是一个庞大的数据集,有许多其他人使用它,有时会进行6、7或8次手动测量。我认为分割数据集的唯一方法是按分钟分割数据集,因为两次测量之间大约需要3分钟,因此得到分析所需的分组。感谢再次添加,对于一个完整的测量,我取平均值时,分钟的范围不应该大于2,因此我相信差值大于2意味着新的数据子集。
$`0`
   MIN SEC PT  CO2R  CO2D  PAR
1  58  10  5 375.7 -11.6 1002
2  58  20  5 375.4 -11.6 1001
3  58  33  5 375.2 -11.6 1001
4  58  43  5 375.2 -11.5 1000
5  58  54  5 375.3 -11.8 1000

$`1`
   MIN SEC PT  CO2R CO2D  PAR
6    2   0  5 375.5 -6.3 1001
7    2   8  5 375.3 -6.0 1000
8    2  21  5 375.2 -6.1  997
9    2  37  5 375.3 -6.2  993
10   2  51  5 375.4 -6.2 1003

$`2`
   MIN SEC PT  CO2R CO2D  PAR
11   5  20  5 376.3 -7.6 1000
12   5  35  5 376.1 -7.3 1000
13   5  52  5 375.9 -7.3 1000
14   6   5  5 376.0 -7.8 1000
15   6  23  5 376.1 -8.0 1002

$`3`
   MIN SEC PT  CO2R CO2D  PAR
16  10   2  5 376.3 -3.3 1003
17  10  14  5 376.3 -3.1 1003
18  10  27  5 376.5 -3.4 1003
19  10  41  5 376.7 -3.7 1006
20  10  55  5 376.8 -3.9  997