如果是已经排好序的
> aa<-data.frame(x=rep(letters[1:2], c(2,3)),y=rnorm(5))
> aa
x y
1 a 0.8525411
2 a 0.2887768
3 b 0.4442048
4 b -0.9417330
5 b -0.2100489
> aa$z<-rep(1:length(table(aa$x)),table(aa$x))
> aa
x y z
1 a 0.8525411 1
2 a 0.2887768 1
3 b 0.4442048 2
4 b -0.9417330 2
5 b -0.2100489 2
如果没有排好序
> my_data <-read.table(header = TRUE, text = "
x y
a 3
b 3
a 4
d 5
d 6
e 5
")
> library(dplyr)
> my_data
x y
1 a 3
2 b 3
3 a 4
4 d 5
5 d 6
6 e 5
> my_data%>%group_by(x)%>%
mutate(z=rep(1:length(table(x)),table(x)))
# A tibble: 6 x 3
# Groups: x [4]
x y z
<fct> <int> <int>
1 a 3 1
2 b 3 2
3 a 4 1
4 d 5 3
5 d 6 3
6 e 5 4