根据值创建向量另一个向量

时间:2018-07-01 01:36:47

标签: r loops vector

我得到了矢量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}}

但是没有用。

1 个答案:

答案 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