簡體   English   中英

在 R 中使用查找和替換多個字符串條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM