基于来自另一列的字符串值创建新列

SNT*_*SNT 3 r

我在 r 中有一个数据框,其中有一列是一个大字符串。我想使用该字符串创建具有特定值的新列。

这是示例数据框:

dom <- data.frame(
  Site = c("alpha", "beta", "charlie", "delta"),
  Banner = c("testing_Watermelon -DPI_300x250 v2"   , "notest_Vanilla Latte-DPI_300x250 v2" , "bottle :15s","aaaa vvvv cccc Build_Mobile_320x480")
)
Run Code Online (Sandbox Code Playgroud)

现在,如果列 Banner 有包含Watermelonor 的字符串,Vanilla那么新列label应该只有值WatermelonVanillaelse Default。以下是预期的数据帧应该是什么样的。

我如何使用grep或其他任何东西来拥有多个条件?

dom_output <- data.frame(
  Site = c("alpha", "beta", "charlie", "delta"),
  Banner = c("testing_Watermelon -bbb_300x250 v2"   , "notest_Orange aaa_300x250 v2"    , "bottle :15s","aaaa vvvv cccc 320x480"),
  label  = c("Watermelon","Vanilla","Default","Default")
)
Run Code Online (Sandbox Code Playgroud)

Gre*_*gor 5

library(stringr)
dom$label = str_extract(dom$Banner, "Watermelon|Vanilla")
dom$label[is.na(dom$label)] <- "Default"
dom
#      Site                              Banner      label
# 1   alpha  testing_Watermelon -DPI_300x250 v2 Watermelon
# 2    beta notest_Vanilla Latte-DPI_300x250 v2    Vanilla
# 3 charlie                         bottle :15s    Default
# 4   delta aaaa vvvv cccc Build_Mobile_320x480    Default
Run Code Online (Sandbox Code Playgroud)