根据 R 中先前出现的事件分配虚拟值 - 但也是同一年

Assigning dummy values based on previous occurrences in R - but also for the same year

我想做和这个问题一样的事情:

但我不仅希望“dummycount”列在前一年“dummy”列中的出现次数取值 1,而且在发生的同一年也取值 1。

你能帮帮我吗?

这是您要实现的目标吗?

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
df1 <- read.table(
  text = "nameID  titleID  year  dummy
          a       b 1999     1
          e       c 1999     1
          i       d 2000     0
          o       f 2000     0
          a       f 2000     1
          e       g 2001     0
          i       h 2002     0
          i       j 2003     0
          u       k 2003     1
          o       l 2004     1
          a       m 2004     0
          o       m 2004     0
          u       n 2005     0",
  header = TRUE
)

df1 %>% 
  group_by(nameID) %>%
  mutate(dummycount = ifelse(cummax(lag(dummy, default = 0)) >= 1 | cummax(dummy) >= 1, 1, 0))
#> # A tibble: 13 × 5
#> # Groups:   nameID [5]
#>    nameID titleID  year dummy dummycount
#>    <chr>  <chr>   <int> <int>      <dbl>
#>  1 a      b        1999     1          1
#>  2 e      c        1999     1          1
#>  3 i      d        2000     0          0
#>  4 o      f        2000     0          0
#>  5 a      f        2000     1          1
#>  6 e      g        2001     0          1
#>  7 i      h        2002     0          0
#>  8 i      j        2003     0          0
#>  9 u      k        2003     1          1
#> 10 o      l        2004     1          1
#> 11 a      m        2004     0          1
#> 12 o      m        2004     0          1
#> 13 u      n        2005     0          1

reprex package (v2.0.1)

于 2021-11-08 创建