[英]using find and replace for multiple string criteria in R
我最近做了一份調查問卷,在國籍字段中,我留下了一個打開的文本框字段(一個明顯的錯誤)。
現在我有了結果,我留下了幾個相同的字符串,我想知道是否有一個 function 可以讓我搜索並用某種松散的標准替換。
例如,我有很多法國參與者,並從 x 領土得到了諸如 Francaise、France、french 或 France 之類的答案。 是否有任何 R function 可以讓我執行以下操作(只是部分命名字符串):
如果data$nationality包含'franc','frenc',則將其轉換為'france'
gsub 可以做到這一點:
df<-data.frame(strings=c("France","Francais","French"),stringsAsFactors =FALSE)
df$New_Strings<-gsub("Francais|French","France",df$strings)
的|
運算符的作用類似於“或”,因此如果您願意,可以在其中串入更多
您可以使用相似性度量來計算字符串與目標字符串"Franc"
和"Frenc"
的接近程度。 然后根據閾值決定保留什么。
我將使用 package stringdist
。
library(stringdist)
x <- scan(what = character(), text = '
I got a lot of french participants and got answers like francaise, france, french or france from x territory, as an example. Is there any R function that would let me do the following
')
pattern <- c('Franc', 'Frenc')
現在sapply
function stringsim
到每個pattern
,使用兩種不同的措施, "soundex"
和"lw"
。
sim1 <- sapply(pattern, stringsim, x, method = 'soundex')
sim1 <- apply(sim1, 1, max)
sim2 <- sapply(pattern, stringsim, x, method = 'jw')
sim2 <- apply(sim2, 1, max)
決定要保留什么。
thresh <- 0.75
x[sim1 >= thresh]
#[1] "french" "francaise," "france," "french" "france"
x[sim2 >= thresh]
#[1] "french" "france," "french" "france"
閾值可以做得更小。
thresh <- 0.70
x[sim1 >= thresh]
#[1] "french" "francaise," "france," "french" "france"
x[sim2 >= thresh]
#[1] "french" "francaise," "france," "french" "france"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.