Удаление скобок и знака доллара с помощью gsub () в R? - PullRequest
0 голосов
/ 23 декабря 2018

Я импортировал CSV-файл в r.Немногие из моих столбцов содержат данные о валютах (например, начинаются с '$').Чтобы удалить '$' и преобразовать его в числовой тип, я использовал функцию gsub (), и она отлично работает.Пример кода:

strip_dollars = function(x) { as.numeric(gsub("[\\$, ]", "", x)) }
lapply(data[ , c("x4", "x5", "x7", "x8")] , strip_dollars) 

Но в одном столбце конкретной валюты у меня есть несколько записей с круглыми скобками, например (2 345 долл. США) , 3500 долл. США, 5600 долл. США, (3234 долл. США) , ..... Следовательно, для этого столбца приведенный выше код не работает.Пожалуйста, помогите мне удалить скобки и знак доллара из этих записей.

Кроме того, чтобы определить столбцы, содержащие данные о валюте, я много пробовал, включая решения, приведенные в R - определить, какие столбцы содержат данные о валюте $ но это не работает.Пожалуйста, предложите оптимальный способ сделать это.

1 Ответ

0 голосов
/ 23 декабря 2018

Я думаю, что самый простой способ - пройти через то, что заменено.Я предполагаю, что вы не хотите терять негативность, предложенную паранами, поэтому мы сделаем два шага:

s <- c("($2,345)", "$3,500", "$5,600", "($3,234)")
gsub("[$),]", "", s)
# [1] "(2345" "3500"  "5600"  "(3234"

Это удалит большую часть мусора (который мы не хотели /нужно сохранить), теперь давайте разберемся с ведущей левой пареню:

gsub("^\\s*[(]", "-", gsub("[$),]", "", s))
# [1] "-2345" "3500"  "5600"  "-3234"

Отсюда, если необходимо, вы можете конвертировать в numeric:

as.numeric(gsub("^\\s*[(]", "-", gsub("[$),]", "", s)))
# [1] -2345  3500  5600 -3234

Это неочень устойчив к неправильным формам струн.Например, хотя я ищу (и удаляю) начальное место для левой части, все остальное будет проблемой.

...