【问题标题】:Check values or pattern in one dataframe column against another column to see if match appears检查一个数据框列中的值或模式与另一列是否匹配
【发布时间】:2018-02-07 08:07:51
【问题描述】:

我有一份品牌药物清单,我需要检查它们是否存在于患者的药物清单中。患者医疗清单主要列为通用表格,但我需要检查是否输入了品牌并将其更改为通用表格。患者的 med 列表包含列中的药物和说明。我的目标是创建一个列来标记品牌是否显示为“是”“否”或 TRUE FALSE。我的数据集包含大约 5000 个品牌名称条目,患者列表包含大约 60000 个条目。由于从品牌列表到患者列表的模式不同,我不确定从哪里开始。患者医疗列表中的大小写也不一致。任何帮助表示赞赏。

示例数据集:MRN 是患者 ID

Brand <- c("Evista", "Rozerem", "Altace")

MRN <- c("121212", "121212", "231212", "432123", "432123", "542345", 
"323412", "242341", "412111", "642321")

MedList <- c("raloxifene 60mg daily", "Rozerem 8mg daily", "evista 60mg 
daily", "metoprolol tartate 25mg twice daily", "ramelteon 8mg daily", 
"ramipril 5mg daily", "omeprazole 20mg daily", "ALTACE 5mg nightly", 
"ramelteon 8mg daily", "imatinib 400mg daily")

Patients <- data.frame(MRN,MedList)

我的目标是最终得到这样的结果

inlist <- c(FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, 
FALSE)

Patients <- cbind(Patients, inlist)

谢谢。

【问题讨论】:

    标签: r string match


    【解决方案1】:

    试试这个:

    grepl(paste(toupper(Brand), collapse = '|'), toupper(MedList))
     [1] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
    

    【讨论】:

    • 是的,这是真的。
    • 感谢您的帮助。我的示例数据不像真实数据那么简单。它抛出了一个错误,我不确定是否与逗号或药物中的空格有关。多成分药物的名称中有逗号。这是错误的截断版本。 grepl(paste(toupper(dfaDistinct$clean), collapse = "|"), toupper(medList$Med.Description)) 中的错误:无效的正则表达式'A-METHAPRED|ABACAVIR SULFATE|ABACAVIR SULFATE AND LAMIVUDINE TABLETS|ABACAVIR SULFATE,拉米夫定和齐多夫定|
    • 您的数据太多,无法将所有 dfaDistinct$clean 放在一个 grepl 中(最多大约 2.500 个元素):您必须将其拆分为多个函数。您可以优化您的 grepl 以避免与逗号或其他特殊字符相关的问题,但如果没有示例,我无法帮助您。
    • 我也有同样的问题。你最后是怎么解决的?
    【解决方案2】:

    如果只有大写而不是拼写问题,grepl 应该做你想做的事:

    grepl(paste0(Brand, collapse = "|"), MedList, ignore.case = TRUE)
    

    如果您的pattern(即“品牌”)是一个非常长的向量,您可以使用来自stringrstr_detect()。它更快并且支持更长的模式(但它没有ignore.case 参数)。

    stringr::str_detect(tolower(MedList), paste0(tolower(Brand), collapse = "|"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-24
      • 2019-01-20
      • 2022-01-16
      相关资源
      最近更新 更多