3

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
4

1 に答える 1

6

あなたが探している機能は次の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
于 2012-07-13T15:47:26.513 に答える