我得到了矢量vec和所需的结果:
vec <- c(1,1,1,20,1,1,1,1,40,1,120,1,1)
result <- c(1,1,1,1 ,2,2,2,2, 2,3,3 ,4,4)
结果是这样创建的:从1开始,如果vec中的值> 10,则开始给出2,如果下一个值> 10,则从3开始,依此类推。
我尝试过:
b <- 1
for (i in 1:length(vec)){
if(vec[i] < 10){
vec[i] <- 1
} else {
b <- b+1
vec[i] <- b}}
但是没有用。
答案 0 :(得分:1)
使用滞后cumsum
s=dplyr::lag(vec>10)
s[is.na(s)]=FALSE
cumsum(s)+1
[1] 1 1 1 1 2 2 2 2 2 3 3 4 4