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]
我有一个数据集,我试图在其中标记具有所有类别值的成员。我想将具有这些值的成员标记为 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]