我不确定我是否以正确的方式处理这个问题,但我尝试做的是根据值之间的差异将数据帧分成组。例如,使用下面的数据,我希望对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函数,当每个数据子集都有唯一的元素时,但是我在这个数据集中没有任何唯一的元素可以进行拆分。也许这个函数不是我需要的?任何提示都很感谢!
谢谢,
发布于 2013-02-01 14:23:53
您可以使用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)结果(4个数据帧的列表):
$`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 997https://stackoverflow.com/questions/14640643
复制相似问题