我在 R 作業。
我有一些短語要從資料框中的某些文本字串中洗掉。words_remove 顯示我要替換的短語。除非整個確切的短語都在字串中,否則我不希望它被洗掉。
words_remove <- c("red cats", "blue dogs", "pink horse")
這是我的資料框:
data <- data.frame(row_id=1:4, text = c("red cats don't exist", "I have a blue dog", "I don't like blue dogs", "I like horses"))
| row_id | 文本 |
|---|---|
| 1 | 紅貓不存在 |
| 2 | 我有一只藍狗 |
| 3 | 我不喜歡藍狗 |
| 4 | 我喜歡馬 |
我想用 NA 替換“text”中的所有“words_remove”實體(或者甚至更好地完全洗掉它們)。
我需要的輸出:
| row_id | 文本 |
|---|---|
| 1 | 不存在 |
| 2 | 我有一只藍狗 |
| 3 | 我不喜歡 |
| 4 | 我喜歡馬 |
在我的真實資料框中,“words_remove”中有很多短語,所以我認為 case_when 等太耗時了。
有任何想法嗎?
uj5u.com熱心網友回復:
您可以形成短語的正則運算式交替并對其進行替換:
words_remove <- c("red cats", "blue dogs", "pink horse")
regex <- paste0("\\s*\\b(?:", paste(words_remove, collapse="|"), ")\\b\\s*")
data$text <- gsub("^\\s |\\s $", "", gsub(regex, " ", data$text))
data
row_id text
1 1 don't exist
2 2 I have a blue dog
3 3 I don't like
4 4 I like horses
這里的策略是用一個空格替換任何匹配的短語以及任何周圍的空格。外部呼叫gsub()剝離任何剩余的前導/尾隨空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516488.html
標籤:r细绳弦乐
