【问题标题】:R: after identify a "1", repeat (carry foward) "1" until the end of the records of the IDR:识别出一个“1”后,重复(结转)“1”直到ID的记录结束
【发布时间】:2021-11-11 19:35:26
【问题描述】:

我有一个带有“id”和“rec”的小标题:

a <- tibble(id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3),
            rec = c(0,0,1,1,0,0,1,0,0,0,0,1,0,1,0))
a

我需要创建另一个列(这里称为“result”),因此“result”列的值将等于“rec”,或者在“rec”列中找到“1”后, “1”代表以下所有行,直到该“id”的向量结束,如下所示:

b <- tibble(a, result = c(0,0,1,1,1,0,1,1,1,1,0,1,1,1,1))
b

有没有办法使用 tidyverse 方式来做到这一点?,比如:

a %>% group_by(id) %>% mutate(result = ...) %>% ungroup()

【问题讨论】:

    标签: r dplyr tidyverse


    【解决方案1】:

    cummax在按'id'分组后可能需要

    library(dplyr)
    a <- a %>% 
        group_by(id) %>% 
        mutate(result = cummax(rec)) %>%
        ungroup
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-18
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2016-04-08
      相关资源
      最近更新 更多