数据框 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
我得到了以下数据框
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