几个带有上下的grepl
several grepl with upper and lower
我有以下 data.frame:
data frame
我正在使用 dplyr
和 stringr
,我想按以下方式过滤列 Nombre
:保留包含“regimen”或“promocion”的所有行或“REGIMEN”或“PROMOCION”,即大写和小写。我试过了:
str_view(df$Nombre, regex("regimen|promocion", ignore_case=T))
但在那种情况下,它只保留大写和小写的第一个单词 (regimen)。如果我删除 ignore_case=T,它会同时找到“regimen”和“promocion”,但区分大小写,即仅小写。
当然,这是一个例子,我需要过滤很多词,不仅仅是“regimen”和“promocion”,所以我没有单独过滤每个词。
您可以使用 dplyr
中的 filter
以及 base R
中的 grepl
和 (?i)
来使模式匹配不区分大小写:
library(dyplr)
df %>%
filter(grepl("(?i)regimen|promocion", Nombre))
N Nombre
1 100 Regimen
2 12345 promocion
3 888 otro regimen
或者,您可以使用相同的模式简单地对数据帧进行子集化:
df[grepl("(?i)regimen|promocion", df$Nombre),]
数据:
df <- data.frame(
N = c(100, 12345, 666, 888),
Nombre = c("Regimen", "promocion", "ley", "otro regimen")
)
由于数据似乎是西班牙语,我会使用更复杂的正则表达式(也能够捕捉口音)。
library(tidyverse)
df <- data.frame(
N = c(100, 12345, 666, 888),
Nombre = c("RÉGIMEN", "promoción", "ley", "otro regimen")
)
df %>%
filter(str_detect(Nombre, regex("r\wgimen|promoci\wn", ignore_case = TRUE)))
#> N Nombre
#> 1 100 RÉGIMEN
#> 2 12345 promoción
#> 3 888 otro regimen
我有以下 data.frame: data frame
我正在使用 dplyr
和 stringr
,我想按以下方式过滤列 Nombre
:保留包含“regimen”或“promocion”的所有行或“REGIMEN”或“PROMOCION”,即大写和小写。我试过了:
str_view(df$Nombre, regex("regimen|promocion", ignore_case=T))
但在那种情况下,它只保留大写和小写的第一个单词 (regimen)。如果我删除 ignore_case=T,它会同时找到“regimen”和“promocion”,但区分大小写,即仅小写。
当然,这是一个例子,我需要过滤很多词,不仅仅是“regimen”和“promocion”,所以我没有单独过滤每个词。
您可以使用 dplyr
中的 filter
以及 base R
中的 grepl
和 (?i)
来使模式匹配不区分大小写:
library(dyplr)
df %>%
filter(grepl("(?i)regimen|promocion", Nombre))
N Nombre
1 100 Regimen
2 12345 promocion
3 888 otro regimen
或者,您可以使用相同的模式简单地对数据帧进行子集化:
df[grepl("(?i)regimen|promocion", df$Nombre),]
数据:
df <- data.frame(
N = c(100, 12345, 666, 888),
Nombre = c("Regimen", "promocion", "ley", "otro regimen")
)
由于数据似乎是西班牙语,我会使用更复杂的正则表达式(也能够捕捉口音)。
library(tidyverse)
df <- data.frame(
N = c(100, 12345, 666, 888),
Nombre = c("RÉGIMEN", "promoción", "ley", "otro regimen")
)
df %>%
filter(str_detect(Nombre, regex("r\wgimen|promoci\wn", ignore_case = TRUE)))
#> N Nombre
#> 1 100 RÉGIMEN
#> 2 12345 promoción
#> 3 888 otro regimen