Удаление "$" из кадра данных в R - PullRequest
1 голос
/ 02 марта 2020

У меня есть 10 x ~ 15 000 фреймов данных с зарплатами в столбце 9, и я пытаюсь удалить $ из начала каждой записи в этом столбце.

Это лучшая версия того, что я иметь. Я новичок в R и гораздо больше знаком с другими языками. Желательно, если есть способ запустить операцию для каждого элемента фрейма данных (например, cellfun в Matlab или понимание списка в python), который мог бы сделать это намного проще. Судя по моим попыткам отладки, кажется, что gsub просто ничего не делает, даже за пределами al oop. Любые предложения от более опытного пользователя будут оценены. Спасибо.

bbdat <- read.csv("C:/Users/musta/Downloads/BBs1.csv", header=TRUE, sep=",", dec=".", stringsAsFactors=FALSE)
i <- 0
for (val in bbdat[,9])
{
  i = i+1
  bbdat[i,9]<- gsub("$","",val)
}

1 Ответ

1 голос
/ 02 марта 2020

$ является метасимволом и подразумевает конец строки. Если мы хотим оценить его буквально, либо используйте fixed = TRUE (по умолчанию это FALSE), либо оставьте его внутри квадратной скобки ("[$]"), либо экранируйте (\\$). Поскольку gsub/sub векторизовано, цикл не требуется

bbdat[,9] <- gsub("$", "", bbdat[,9], fixed = TRUE)

Если в каждом элементе есть только один экземпляр $, используйте sub (gsub - global substitution) instead of gsub`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...