簡體   English   中英

刪除 R 中的不間斷空格字符

[英]Removing non-breaking space characters in R

我有 dataframe,其中包含多個列和 50K 以上的觀察值。 我們將其命名為 df1。 其中一個變量是 PLATES(此處表示為“y”),它包含城市中公交車的車牌號。 我想將此數據框與另一個(df2)匹配,其中我也有車牌數據。 我只想保留匹配記錄。 在查看來自 CSV 文件的 df1 中的數據時,我意識到對於 y,幾個觀察值在車牌號之前有對應於不間斷空格的符號。 我該如何擺脫它,以便在我進行匹配時這不是問題。 這里有一些代碼可以幫助說明。 假設您有 5 個車牌號:

y <- c(0740170, 0740111, 0740119, 0740115, 0740048)

但經過進一步檢查

view(y)

你看到以下內容

<c2><a0>0740170
<c2><a0>0740111
<c2><a0>0740119
<c2><a0>0740115
<c2><a0>0740048

我從這篇文章https://blog.tonytsai.name/blog/2017-12-04-detecting-non-breaking-space-in-r/ 試過了,但沒有用

y <- gsub("\u00A0", " ", y, fixed = TRUE)

非常感謝您就如何處理此問題提供的幫助。 謝謝!

不太確定這會有所幫助,因為我無法測試我的答案(因為我無法重現您的問題)。 但是,如果不間斷空格字符同時是非 ASCII 字符,那么解決方案是:

y <- gsub("[^ -~]+", "", y)

該模式匹配任何非 ASCII 字符,替換將它們設置為 null。 希望這可以幫助

另一個答案匹配任何非 ASCII 字符,但是如果您需要保留非 ASCII 字符(例如帶有重音符號的字母)怎么辦? 在這種情況下,我想專門匹配問題中<c2><a0>類型的不間斷空格。 對我有用的是匹配\xa0

test # nbsp between type and II
# [1] "Diabète de type II"
tools::showNonASCII(test) 
# 1: Diab<c3><a8>te de type<c2><a0>II

# other answer
gsub("[^ -~]+", " ", test) # has missing è
# [1] "Diab te de type II"
tools::showNonASCII(gsub("[^ -~]+", " ", test))# no output as no non-ascii chars left

gsub("\xa0+", " ", test)
# [1] "Diabète de type II"
tools::showNonASCII(gsub("\xa0+", " ", test)) # the <c2><a0> nbsp is replaced
# 1: Diab<c3><a8>te de type II

http 致敬://www.pmean.com/posts/non-breaking-space/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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