数据框 r 和 grepl 中的两个条件

Data frame r and two conditions in grepl

我得到了以下数据框

x <- c("Action", "Adventure", "Animation")
my_text <- c("During check has Animation.", "check none.", "Here is Adventure.")
a <- c(1,2,3)
result <- c(1,5.2,3)

    x           my_text                     a   result
1   Action      During check has Animation. 1   1
2   Adventure   check none.                 2   5.2
3   Animation   Here is Adventure.          3   3

基本上我正在尝试使用 grepl 给我结果列。我可以在 grepl 中使用一个条件并检查单词 "check",如果找到则生成 5.2。但是我想要的是找到 "check" 但是如果 "during check" 找到了应该使用的值。 所以,如果 "check" 那么 5.2 但是当 "during check" 来自 a 列的值时,对于来自 a 的任何其他值?

您可以尝试使用lookbehind。使用您的数据:

df = data.frame(x=x,my_text=my_text,a=a,stringsAsFactors = FALSE)

df$result = ifelse(grepl("(?<!during )\bcheck",df$my_text,perl=TRUE,ignore.case = TRUE),
                   5.2,df$a)
> df
          x                     my_text a result
1    Action During check has Animation. 1    1.0
2 Adventure                 check none. 2    5.2
3 Animation          Here is Adventure. 3    3.0