如果两个组彼此相距一定距离,则在R中组合rleid分组

时间:2016-03-29 08:41:39

标签: r dataframe data.table grouping cluster-analysis

我有一个监测患者生命体征变化的数据框。

然后使用交通灯系统(绿色,琥珀色和红色)对读数进行分类。

我目前正在使用rleid函数将组ID变量添加到我的数据框中。

然后,我可以将数据在红色类别中出现的次数分开,并且可以执行以下操作:

  1. 计算出每个事件的持续时间

  2. 最小和最大读数等等。

  3. 但是,我想将12小时内发生的任何红色类别(46个数据点)合并。

    采用以下示例:

    Date=seq(as.POSIXct("2015-01-01 00:00:00"), as.POSIXct("2015-01-31 23:45:00"), by="15 min")
    Data=c(rnorm(750,1,2),rnorm(100,4,2), rnorm(10,1,1),rnorm(50,4,2.5),rnorm(500,0,1),rnorm(600,6,2),rnorm(26,1,2),rnorm(940,6.5,2))
    Class=c(rep("Green",750), rep("Red",100),rep("Green",10),rep("Red",50), rep("Green",500),rep("Red",600),rep("Green",26),rep("Red",940))
    
    DF=data.frame(Date,Data,Class)
    library(data.table)
    library(ggplot2)
    DF$GroupID=rleid(DF$Class)
    
    ggplot(DF,aes(Date,Data,colour=Class,group=1))+geom_line()
    

    在我的数据框中,我有4个红色群集,

    但我希望只有两个“红色”组,因为群集之间的数据点少于46个“绿色”。

    有没有办法指定这个?

1 个答案:

答案 0 :(得分:2)

我们可以使用每个绿色和红色组的行数,并且当绿色组的行数小于46时,将其更改为红色

为了确保之前的群组是“红色”,我们可以添加一列来告诉我们“' Class'上一组

Preferences