【问题标题】:R Test if Specific Groups of Values are in ID GroupR测试特定的值组是否在ID组中
【发布时间】:2021-09-14 16:55:45
【问题描述】:

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

【问题讨论】:

  • 当我尝试为您的示例数据运行代码时出现错误。
  • @rjen 它可以工作,如果您在复制/粘贴时从.internal ...pointer` 中删除该部分
  • @akrun:确实。
  • @akrun:我没有发布问题。但也许我缺少一些东西。
  • 对不起,我在评论之前没想到

标签: r regex data.table tidyverse


【解决方案1】:

我们可能会使用 all 的另一个条件

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

【讨论】:

    猜你喜欢
    • 2018-12-11
    • 2021-08-19
    • 2010-11-06
    • 1970-01-01
    • 2021-08-19
    • 2012-01-05
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多