我确信以前曾经问过,但对于我的生活,我无法弄清楚要搜索的内容!
我有以下数据:
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
答案 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