文本替换——模式是一组字符串[r]
Text Replacement -- Pattern is a set list of strings [r]
我在大型数据集中有一个字符串变量,我想根据一组字符串列表对其进行清理。前任。 pattern <- c("dog","cat") 但是我的列表大约有 400 个元素。
vector_to_clean ==一个
black Dog
white dOG
doggie
black CAT
thatdamcat
然后我想应用一个函数来yield
新
dog
dog
dog
cat
cat
我尝试了 str_extract、grep、grepl 等。因为我一次可以根据一个字符串选择一种模式。我想我想要的是将 dapply 与这些文本清理功能之一一起使用。不幸的是,我被困住了。下面是我最近的尝试。感谢您的帮助!
new <- vector()
lapply(pattern, function(x){
where<- grep(x,a,value = FALSE, ignore.case = TRUE)
new[where]<-x
})
我们 paste
'pattern' 向量一起创建一个字符串,在我们将其更改为小写后使用它从 'vec1' 中提取单词(tolower(vec1)
).
library(stringr)
str_extract(tolower(vec1), paste(pattern, collapse='|'))
#[1] "dog" "dog" "dog" "cat" "cat"
数据
pattern <- c("dog","cat")
vec1 <- c('black Dog', 'white dOG', 'doggie','black CAT', 'thatdamcat')
另一种使用基数 R 的方法是:
#data
vec <- c('black Dog', 'white dOG', 'doggie','black CAT','thatdamcat')
#regexpr finds the locations of cat and dog ignoring the cases
a <- regexpr( 'dog|cat', vec, ignore.case=TRUE )
#regmatches returns the above locations from vec (here we use tolower in order
#to convert to lowercase)
regmatches(tolower(vec), a)
[1] "dog" "dog" "dog" "cat" "cat"
我在大型数据集中有一个字符串变量,我想根据一组字符串列表对其进行清理。前任。 pattern <- c("dog","cat") 但是我的列表大约有 400 个元素。
vector_to_clean ==一个
black Dog
white dOG
doggie
black CAT
thatdamcat
然后我想应用一个函数来yield
新
dog
dog
dog
cat
cat
我尝试了 str_extract、grep、grepl 等。因为我一次可以根据一个字符串选择一种模式。我想我想要的是将 dapply 与这些文本清理功能之一一起使用。不幸的是,我被困住了。下面是我最近的尝试。感谢您的帮助!
new <- vector()
lapply(pattern, function(x){
where<- grep(x,a,value = FALSE, ignore.case = TRUE)
new[where]<-x
})
我们 paste
'pattern' 向量一起创建一个字符串,在我们将其更改为小写后使用它从 'vec1' 中提取单词(tolower(vec1)
).
library(stringr)
str_extract(tolower(vec1), paste(pattern, collapse='|'))
#[1] "dog" "dog" "dog" "cat" "cat"
数据
pattern <- c("dog","cat")
vec1 <- c('black Dog', 'white dOG', 'doggie','black CAT', 'thatdamcat')
另一种使用基数 R 的方法是:
#data
vec <- c('black Dog', 'white dOG', 'doggie','black CAT','thatdamcat')
#regexpr finds the locations of cat and dog ignoring the cases
a <- regexpr( 'dog|cat', vec, ignore.case=TRUE )
#regmatches returns the above locations from vec (here we use tolower in order
#to convert to lowercase)
regmatches(tolower(vec), a)
[1] "dog" "dog" "dog" "cat" "cat"