Удалите круглые скобки и текст внутри строк из R
В R у меня есть список компаний, таких как:
companies <- data.frame(Name=c("Company A Inc (COMPA)","Company B (BEELINE)", "Company C Inc. (Coco)", "Company D Inc.", "Company E"))
Я хочу удалить текст с помощью скобок, в результате получится следующий список:
Name
1 Company A Inc
2 Company B
3 Company C Inc.
4 Company D Inc.
5 Company E
Один из подходов, который я попробовал, состоял в том, чтобы разбить строку, а затем использовать ldply:
companies$Name <- as.character(companies$Name)
c<-strsplit(companies$Name, "\\(")
ldply(c)
Но поскольку не все названия компаний имеют круглые скобки, это не удается:
Error in list_to_dataframe(res, attr(.data, "split_labels"), .id, id_as_factor) :
Results do not have equal lengths
Я не женат на решении strsplit. Все, что удаляет этот текст, и круглые скобки будут в порядке.
Ответы
Ответ 1
A gsub
должен работать здесь
gsub("\\s*\\([^\\)]+\\)","",as.character(companies$Name))
# [1] "Company A Inc" "Company B" "Company C Inc."
# [4] "Company D Inc." "Company E"
Здесь мы просто заменяем вхождения "(...)" ничем (также удаляя любое ведущее пространство). R заставляет его выглядеть хуже, чем со всеми экранами, которые мы должны делать для скобок, поскольку они являются специальными символами в регулярных выражениях.
Ответ 2
Вы можете использовать stringr::str_replace
. Это приятно, потому что он принимает факторные переменные.
companies <- data.frame(Name=c("Company A Inc (COMPA)","Company B (BEELINE)",
"Company C Inc. (Coco)", "Company D Inc.",
"Company E"))
library(stringr)
str_replace(companies$Name, " \\(.*\\)", "")
# [1] "Company A Inc" "Company B" "Company C Inc."
# [4] "Company D Inc." "Company E"
И если вы все еще хотите использовать strsplit
, вы можете сделать
companies$Name <- as.character(companies$Name)
unlist(strsplit(companies$Name, " \\(.*\\)"))
# [1] "Company A Inc" "Company B" "Company C Inc."
# [4] "Company D Inc." "Company E"
Ответ 3
Вы также можете использовать:
library(qdap)
companies$Name <- genX(companies$Name, " (", ")")
companies
Name
1 Company A Inc
2 CompanyB
3 Company C Inc.
4 Company D Inc.
5 CompanyE
Ответ 4
library(qdap)
bracketX(companies$Name) -> companies$Name
Ответ 5
QDAP - это пакет для количественного анализа дискурса ("Пакет для количественного анализа дискурса"). Одна из функций для очистки и предварительной обработки текста - это скобка X(), которая удаляет текст в квадратных скобках, скобках и скобках для ключей.