【问题标题】:I need to number by a given observation and order我需要按给定的观察和顺序编号
【发布时间】:2022-01-12 09:27:27
【问题描述】:

我需要按照以下顺序对观察结果进行编号,并在达到 offer_start 值时重新开始

evconv <- s%>% 
  arrange(id, time) %>% 
  select(id,time,name)
evconv$name=="offer_start"
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
[20] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  

我需要这样的东西:

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5
[20] 6 7 8 9 10 11 12 1 2 3 4 

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    一个使用rle的想法,

    x <- c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE)
    
    sequence(colSums(matrix(rle(x)$lengths, ncol = 2)))
    #[1] 1 2 3 4 5 6 7 1 2 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      相关资源
      最近更新 更多