代码之家  ›  专栏  ›  技术社区  ›  Nova

基于data.frame中的逻辑向量按行创建唯一组

  •  1
  • Nova  · 技术社区  · 6 年前

    我想一定有一个解决方案,所以对于这个,但我一直在寻找解决方案与 我想要的,但不完全是。 如果可能的话,寻找一个tidyverse解决方案。

    我有一个data.frame,比如newdf:

    newdf <- data.frame(inside.city = c(TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE))
    
    newdf
      inside.city
    1        TRUE
    2        TRUE
    3        TRUE
    4       FALSE
    5       FALSE
    6        TRUE
    7       FALSE
    8       FALSE
    

      inside.city group
    1        TRUE    NA
    2        TRUE    NA
    3        TRUE    NA
    4       FALSE     1
    5       FALSE     1
    6        TRUE    NA
    7       FALSE     2
    8       FALSE     2
    

    假设数据已按日期排序。

    2 回复  |  直到 6 年前
        1
  •  3
  •   MrFlick    6 年前

    mutate() . 我只是对列进行两次变换以简化操作

    library(dplyr)
    newdf %>% mutate(group=cumsum(!inside.city & lag(inside.city, default=TRUE)), 
                     group=ifelse(inside.city, NA, group)) 
    

    基本上,当你在一个真值之后看到一个假值时,你只需要递增,然后把真值设为NA。