【问题标题】:Counting consecutive values according to a given type根据给定类型计算连续值
【发布时间】:2012-07-13 15:45:44
【问题描述】:

我正在使用 R 分析数据,我需要计算数据框中有多少连续值属于某个组。该组由“类型”列给出。这是我的数据示例。不会使用日期列,仅对行进行排序很有用。

                    date type
  2009-11-12 02:01:02    1
  2009-11-12 02:08:27    1
  2009-11-12 02:26:44    1
  2009-11-12 02:27:12    1
  2009-11-12 02:28:14    1
  2009-11-12 02:30:04    1
  2009-11-12 02:35:19    5
  2009-11-12 02:40:11    2
  2009-11-12 11:35:04    6
  2009-11-12 12:32:06    4
  2009-11-12 12:32:24    6
  2009-11-12 14:08:00    5
  2009-11-12 14:16:00    1
  2009-11-12 14:17:33    1

我知道我可以使用 ddply 来汇总数据。但是,我希望通过“类型”列中的更改来分解摘要。应用 ddply 会给我这样的东西:

> df <- data.frame(x=c(1,1,1,1,1,1,5,2,6,4,6,5,1,1))
> ddply(df,c("x"),summarize,count=length(x))
  x    count
  ========
  1     8
  2     1
  4     1
  5     2
  6     2

然而,我真正想要实现的是:

  x    count
  ========
  1     6
  5     1
  2     1
  6     1
  4     1
  6     1
  5     1
  1     2

【问题讨论】:

    标签: r dataframe count grouping


    【解决方案1】:

    你要找的函数是rle:

    df <- data.frame(x=c(1,1,1,1,1,1,5,2,6,4,6,5,1,1))
    > rle(df$x)
    Run Length Encoding
      lengths: int [1:8] 6 1 1 1 1 1 1 2
      values : num [1:8] 1 5 2 6 4 6 5 1
    

    【讨论】:

      猜你喜欢
      • 2017-03-06
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      相关资源
      最近更新 更多