2012-07-13 51 views
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 

回答

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 
相关问题