0

我敢肯定这已经被问过,但对于我的生活,我无法弄清楚要搜索什么!

我有以下数据:

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
4

2 回答 2

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
于 2012-07-06T22:49:07.820 回答
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
于 2012-07-06T22:49:32.627 回答