每行的剧集计数

时间:2012-07-06 22:39:40

标签: r

我确信以前曾经问过,但对于我的生活,我无法弄清楚要搜索的内容!

我有以下数据:

x y  
1 3  
1 3  
1 3  
1 2  
1 2  
2 2  
2 4  
3 4  
3 4

我想输出一个运行计数,每次x或y改变值时都会重置。

x y o  
1 3 1  
1 3 2  
1 3 3  
1 2 1  
1 2 2  
2 2 1  
2 4 1  
3 4 1  
3 4 2

2 个答案:

答案 0 :(得分:2)

尝试类似

的内容
df<-read.table(header=T,text="x y
1 3
1 3
1 3
1 2
1 2
2 2
2 4
3 4
3 4")

cbind(df,o=sequence(rle(paste(df$x,df$y))$lengths))

> cbind(df,o=sequence(rle(paste(df$x,df$y))$lengths))
  x y o
1 1 3 1
2 1 3 2
3 1 3 3
4 1 2 1
5 1 2 2
6 2 2 1
7 2 4 1
8 3 4 1
9 3 4 2

答案 1 :(得分:0)

在看到@ ttmaccer之后,我发现ave的第一次尝试是错误的,这可能是需要的:

> dat$o <- ave(dat$y, list(dat$y, dat$x), FUN=seq )
# there was a warning but the answer is corect.
> dat
  x y o
1 1 3 1
2 1 3 2
3 1 3 3
4 1 2 1
5 1 2 2
6 2 2 1
7 2 4 1
8 3 4 1
9 3 4 2