我有一个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)
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)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |