2015-04-28 74 views
5

我有一组事件的数据按某种顺序发生。我想其列举了一组事件列:此行是第一次,此行是第二次等数据将类似于以下内容:创建列来枚举一组事件

S Time 
A  3 
A  4 
A  5 
A  10 
B  4 
B  9 
B  1 
B  37 

其中S是某种会话ID时间显然是时间。我想要添加以下结果列:

S Time Order 
A  3  1 
A  5  3 
A  4  2 
A  10  4 
B  4  2 
B  9  3 
B  1  1 
B  37  4 

对于每个会话ID,我想有一个列可以根据时间对行进行排序。我正在使用dplyr,我希望能做到这一点简洁的dplyr方式。

回答

7

尝试

library(dplyr) 
df1 %>% 
     group_by(S) %>% 
     mutate(Order=rank(Time)) 
5

你也可以这样做:

df %>% group_by(S) %>% mutate(Order = row_number(Time)) 

dplyr包,row_number()相当于rank(ties.method = "first")