Переименование файлов в папке путем извлечения первой части имени и расширения файла (программирование R) - PullRequest
0 голосов
/ 14 октября 2018

У меня есть сотни файлов, которые содержат данные из API финансов Yahoo.

Они названы в следующей форме:

R> print(list.files())
  [1] "A_yahoo_2017-10-14_2018-10-14.csv"
  [2] "AAL_yahoo_2017-10-14_2018-10-14.csv"
  [3] "AAP_yahoo_2017-10-14_2018-10-14.csv"  

Я хочу удалить имя, которое идет после тикера(символ) и сохранить расширение.

Так, например:

[2] "AAL_yahoo_2017-10-14_2018-10-14.csv"

становится

[2] "AAL.csv"

Я решил удалить расширение, разделить полное имя файла, взять тикер и добавитьпродление снова (утомительно, я знаю).Итак, что-то вроде этого:

library(tools)
oldnames = list.files()
oldnames = tools::file_path_sans_ext(oldnames)
oldnames = strsplit(oldnames, "_")

Что даст примерно такой пример (пример)

print(oldnames)
.
.
[[173]]
[1] "EXC"        "yahoo"      "2017-10-14" "2018-10-14"
.
.

Как видите, тикер находится в [1].Я не уверен, как дальше продолжать переименовывать файлы в папке или есть более экономный способ сделать это.

1 Ответ

0 голосов
/ 14 октября 2018

настройка тестового примера

fn <- c("A_yahoo_2017-10-14_2018-10-14.csv"
, "AAL_yahoo_2017-10-14_2018-10-14.csv"
, "AAP_yahoo_2017-10-14_2018-10-14.csv")  

решение

firstpart <- sapply(strsplit(fn,"_"), "[[",1)
mapply(file.rename, from=fn, to=paste0(firstpart, ".csv"))

Но вы должны убедиться, что первые части уникальны, то есть есть только одно имя файла, начинающееся с AAL, AAPи т. д.

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