我在 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应该只有值Watermelon或Vanillaelse 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)
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)