r - 对 r 中的连续整数进行分组并对组进行分析

标签 r grouping sequence

我有一个数据框,我想用它根据整数值是否连续对间隔进行分组,然后找到每组的最大值和最小值之间的差。

数据示例:

 x        Integers
 0.1      14
 0.05     15
 2.7      17
 0.07     19
 3.4      20
 0.05     21

因此,第 1 组将由 14 和 15 组成,第 2 组将由 19,20 和 21 组成。 那么每组的差值分别为1和2。

我尝试了以下方法,首先对连续值进行分组,但没有成功。

 Breaks <- c(0, which(diff(Data$Integer) != 1), length(Data$Integer)) 

sapply(seq(length(Breaks) - 1), 
     function(i) Data$Integer[(Breaks[i] + 1):Breaks[i+1]])

最佳答案

这是使用 by() 的解决方案:

df <- data.frame(x=c(0.1,0.05,2.7,0.07,3.4,0.05),Integers=c(14,15,17,19,20,21));
do.call(rbind,by(df,cumsum(c(0,diff(df$Integers)!=1)),function(g) data.frame(imin=min(g$Integers),imax=max(g$Integers),irange=diff(range(g$Integers)),xmin=min(g$x),xmax=max(g$x),xrange=diff(range(g$x)))));
##   imin imax irange xmin xmax xrange
## 0   14   15      1 0.05  0.1   0.05
## 1   17   17      0 2.70  2.7   0.00
## 2   19   21      2 0.05  3.4   3.35

我不确定您想要输出什么数据,所以我只是包含了您可能想要的所有数据。

您可以使用subset(...,irange!=0)过滤掉中间组。

关于r - 对 r 中的连续整数进行分组并对组进行分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593954/

相关文章:

r - 有人能告诉我为什么 R 没有将整个 data.frame 用于这个 chisq.test 吗?

r - 使用 rgeos 库合并国家多边形

sql - 从 SQL Server 2008 表中的起始值和结束值创建一个序列?

python - Python 中的加号和减号序列

r - 使用 DT 包中的数据表函数对 NA 进行排序

dictionary - 戈朗 : group and sum slice of structs

python - 将日期时间列表拆分为天数

arrays - 将字符串数组拆分为字符串数组的数组

r - 如何在 R 中重复序列但在重复时调整向量中的值?

将 R 中的 NA 替换为当前的 rollapply 值