我敢肯定这已经被问过,但对于我的生活,我无法弄清楚要搜索什么!
我有以下数据:
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
我敢肯定这已经被问过,但对于我的生活,我无法弄清楚要搜索什么!
我有以下数据:
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
尝试类似的东西
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
在看到@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