Как удалить последние n символов имени файла в R, чтобы создать переменную? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть файлы в папке с названием в этом формате Alabama_8422.csv. Моя цель - создать переменное состояние, которое использует состояние, указанное в имени файла.

Я видел несколько сообщений о том, как это сделать в других программах, но пока не нашел пути к R.

Вот моя попытка:

data<-read_csv("Alabama_8422.csv")
data<-mutate(data, state=(data[-9]))

1 Ответ

2 голосов
/ 09 апреля 2020

Вы можете использовать substring для удаления n символов или регулярное выражение для удаления шаблона.

s <- "Alabama_8422.csv"

### if it's always the last 9 characters you want to remove
substring(s, 1, nchar(s) - 9)
# [1] "Alabama"

### remove the last dot and everything after it
gsub("\\.[^.]*$", "", s)
# [1] "Alabama_8422"
tools:::file_path_sans_ext(s)
# [1] "Alabama_8422"

### remove everything after the first underscore
gsub("_[^_]*$", "", s)
# [1] "Alabama"

### keep just the first group of letters (case-insens)
### (the space is for New Jersey, etc, not sure if that's how it'll appear)
gsub("^([A-Za-z ]+).*", "\\1", s)
# [1] "Alabama"

### alternative, remove from the optional non-letter character before the first number
gsub("[^A-Za-z]?[0-9].*", "", s)
# [1] "Alabama"

@ nurandi, спасибо, что предложили поместить это в контекст OP используйте dplyr:

mutate(data, state = gsub("^([A-Za-z ]+).*", "\\1", filename))

(или любой другой вариант substr / gsub, который вы выберете).

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