R 测试特定值组是否在 ID 组中

R Test if Specific Groups of Values are in ID Group

我有一个数据集,我试图在其中标记具有所有类别值的成员。我想将具有这些值的成员标记为 1(必须具有以 99 开头的值,必须具有以 77[1-9] 开头的值,并且具有 77014 或 G6 或以 T 结尾的值)

我根据原始数据创建了一个包含我感兴趣的所有值的向量:

vec <- rad %>% select(proc1) %>% filter(str_detect(proc1, '^77[1-9]|^77014|^G6|^99|T$'))
vec1 <- vec %>% distinct(proc1)

然后这样做:

rad[, new := +(proc1 %in% vec1$proc1), by = enrolid]

但是有没有一种方法可以让这些值和标签中的任何一个不是可选的,而是只在成员具有所有必需的值时才分配 1?

示例数据:

structure(list(enrolid = c("1005501701", "1005501701", "1005569804", 
"1005578501", "1005613901", "1005613901", "1005613901", "1005618402", 
"1005618402", "1005623302", "1005623302", "1005623302", "1005623302", 
"1005623302", "1005623302", "1005623302", "1005623302", "1005623302", 
"1005623302", "1005623302", "1005623302"), proc1 = c("99211", 
"99213", "99213", "99214", "99213", "99214", "99214", "99214", 
"99214", "99213", "99213", "99214", "99214", "77263", "77280", 
"77412", "77427", "77412", "99214", "99204", "99214")), class = c("data.table", 
"data.frame"), row.names = c(NA, -21L), .internal.selfref = <pointer: 0x00000260f6181ef0>)

我们可以使用另一个条件all

rad[,  new := all(vec1$proc1 %in% proc1) & proc1 %in% vec1$proc1, by = enrolid]