在R;如何将str_extract与mutate一起使用,以基于现有列向dataFrame添加新的“标志”列(T / F)

时间:2019-06-17 20:57:17

标签: r

使用R(在RStudio中)。我需要一个新的标志列,以指示在我的数据框的一列中命名的药物成分的存在,其中该药物成分可以独立存在,也可以是多个成分之一。新列必须位于数据框中,因为它将用作关系数据库中的查找表(在一个列中具有唯一的键变量)。如何使用Str_extract和mutate完成此操作(或者我应该采用其他方法)?

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

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

1 个答案:

答案 0 :(得分:1)

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

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'))