Удалить одну и ту же подстроку из каждого значения в столбце в r - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь очистить данные в файл. Конкретное поле, которое я пытаюсь очистить, описывает, из какого файла он изначально пришел. Таким образом, всегда есть «.csv» в конце значения в поле. Я хотел бы убрать эту часть стоимости, но оставить остальное.

Вот пример поля:

File Name
bagel.csv
donut.csv
hamburger.csv
carrots.csv

Я бы хотел, чтобы поле выглядело примерно так:

File Name
bagel
donut
hamburger
carrot

Есть ли способ сделать это в R? Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

5 голосов
/ 27 февраля 2020

Всегда лучше предоставить минимальный воспроизводимый пример :

field <- c("aa.csv", "bb.csv", "cc.csv")

gsub("\\.csv$", "", field)

Возвращает:

[1] "aa" "bb" "cc"

Объяснение:

Мы можем использовать regex для замены последовательности:

"." (\\.), затем "csv" (csv), за которым следует конец строки ($)

с пустой строкой ("")

В предложении @ G5W мы уверены, что, поскольку мы хотим удалить только расширения, мы не можем случайно заменить строку, если она появляется в середине строки (Например: в «function.csv.txt» мы не хотим заменять часть ".csv")

1 голос
/ 27 февраля 2020

Вы также можете использовать dplyr

library(dplyr)

df <- data.frame(FileName = c('bagel.csv','donut.csv','hamburger.csv','carrots.csv'))

df <- df %>% mutate(FileName = gsub("\\..*","",FileName))
0 голосов
/ 27 февраля 2020

Мы можем использовать file_path_sans_ext из tools

tools::file_path_sans_ext(field)
#[1] "aa" "bb" "cc"

данных

field <- c("aa.csv", "bb.csv", "cc.csv")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...