1、按照分组生成顺序编号
df<-data.frame(group=c(rep("a",3),rep("b",4),rep("c",2)))
df<-transform(df, a=as.integer(group))
index<-function(x){return(c(1:length(x)))}
df<-transform(df,b=unlist(tapply(a,group,index)))
结果如下:
group | a | b |
---|---|---|
a | 1 | 1 |
a | 1 | 2 |
a | 1 | 3 |
b | 2 | 1 |
b | 2 | 2 |
b | 2 | 3 |
b | 2 | 4 |
c | 3 | 1 |
c | 3 | 2 |
2、按照分组进行累加
df<-data.frame(group=c(rep("a",3),rep("b",4),rep("c",2)))
df<-transform(df, a=as.integer(group))
index<-function(x){return(cumsum(x))}
df<-transform(df,b=unlist(tapply(a,group,index)))
3、判断单调性
df<-data.frame(group=c(rep("a",3),rep("b",4),rep("c",2)))
df<-transform(df, a=as.integer(group))
index<-function(x){return(c(NA,diff(x)))}
df<-transform(df,b=unlist(tapply(a,group,index)))