首页 > 解决方案 > 在R中;如何将 str_extract 与 mutate 结合使用以基于现有列向数据帧添加新的“标志”列 (T/F)

问题描述

使用 R(在 RStudio 中)。我需要一个新的标志列,指示在我的数据框的一列中命名的药物成分的存在,该成分可能是独立的,也可能是几个成分之一。新列需要在数据框中,因为它将用作关系数据库中的查找表(在一列中具有唯一的键变量)。我怎样才能使用 Str_extract 和 mutate 来完成这个(或者我应该采取另一种方法)?

我有一个 14 列和 400K 加行的数据框。行是个别特定的药品,列描述它们的成分。一栏包含药物的通用名称。此列中的大多数行都有一个药物名称,有些行有多个药物成分,例如对乙酰氨基酚/伪麻黄碱/布洛芬。在数百种不同的药物名称中,我对大约 50 种特定的仿制药感兴趣。例如布洛芬。我将需要一个列来标记通用名称中是否包含特定药物,即具有 TRUE 或 FALSE 值。我需要将此添加到数据框中,因为其他列包含其他特征,包括用于匹配另一个关系数据库中的药物的键。我的想法是使用 str_detect(在 stringr 中)匹配药物名称列中的布洛芬,并在使用 mutate(tidyr,dplyr)创建的新列“Contains_Ibuprofen”中给出值 TRUE 或 FALSE。我怎样才能使用 Str_extract 和 mutate 来完成这个(或者我应该采取另一种方法)?

我不知道如何在带有 mutate 的数据帧上使用 str_detect 来创建新列。还是我应该使用不同的方法?

标签: r

解决方案


这是一种方法(如果我正确理解了这个问题)

library(tidyverse)

  df <- tribble(~columnx, ~generic,
  'foo', 'acetaminophen/pseudoephedrine/ibuprofen',
  'bar', 'dostinex',
  'mike', 'lipator',
  'bill', 'cabergoline',
  'pete', 'asprin/ibuprofen')

  df %>% 
    mutate(Contains_Ibuprofen = str_detect(generic, 'ibuprofen'))

推荐阅读