仅返回基于另一个变量的第一个实例

Jer*_*son 2 r

我有一个ID列表(有些是重复的),我有一个KEEP变量.如果在KEEP列中有这样的实例,我想创建一个1或0的列,即使它不是那个特定的列

id <- c(101,101,101,102,102,102,103,103,103,104,104,106,107,108)
keep <- c("Y",0,0,"Y",0 ,0 ,"Y" ,0 ,0 ,0 ,0 ,0 ,0 ,0)
df <- data.frame(id, keep)
Run Code Online (Sandbox Code Playgroud)

我想创建第三列,如果保留列中有一个Y,则匹配所有ID.

看起来应该是这样的.

> df

    id keep countkeep
1  101    Y         1
2  101    0         1
3  101    0         1
4  102    Y         1
5  102    0         1
6  102    0         1
7  103    Y         1
8  103    0         1
9  103    0         1
10 104    0         0
11 104    0         0
12 106    0         0
13 107    0         0
14 108    0         0
Run Code Online (Sandbox Code Playgroud)

joe*_*son 8

library(dplyr)
df %>% group_by(id)%>% mutate(countkeep = ifelse(any(keep=="Y"),1,0))

      id   keep countkeep
   <dbl> <fctr>     <dbl>
1    101      Y         1
2    101      0         1
3    101      0         1
4    102      Y         1
5    102      0         1
6    102      0         1
7    103      Y         1
8    103      0         1
9    103      0         1
10   104      0         0
11   104      0         0
12   106      0         0
13   107      0         0
14   108      0         0
Run Code Online (Sandbox Code Playgroud)