У меня есть папка, содержащая сотни текстовых файлов с конкретными финансовыми данными для каждой комбинации балансовой единицы / года / месяца (для конкретных компаний, которые обозначаются четырехзначным числом в начале файла).Мне нужен способ перебрать все эти файлы и создать xlsx для каждого из них в целях аудита.
Например, папка будет содержать txt-файлы, например:
8800-2015-01.txt
8800-2015-02.txt
......and many more like this......
Все файлыстолбцы, имена столбцов и т. д. Мне нужно прочитать их, создать для каждого из них файлы xlsx и сохранить их в той же папке.
В приведенном выше примере эта папка будет содержать тексти xlsx файлы, такие как:
8800-2015-01.txt
8600-2015-02.txt
8800-2015-01.xlsx
8800-2015-02.xlsx
Я могу написать код, чтобы вывести список всех файлов для определенных шаблонов, используя это:
library(writexl)
setwd(path)
list = list.files(pattern = flob2rx('*8800*.txt*')
Тогда можно сделать что-то вроде этого:
txt_files <- lapply(list, function(x) read_delim(x,
"|",
escape_double = FALSE,
trim_ws = TRUE,
skip = 6))
Но как бы вы тогда повторили, соблюдая одинаковые правила именования для каждого файла и записывая все xlsx в одну и ту же папку?
Редактирование, чтобы показать, что я сделал.Предоставленные решения дали мне идеи и привели к финалу того, что я использовал.Мне также пришлось выполнить некоторую фильтрацию и выбрать определенные столбцы, которых не было в исходном сообщении.
library(writexl)
setwd(path)
file_list = list.files(pattern = glob2rx('*880*.TXT*'))
for (i in file_list){
write_xlsx(
filter(
select(
read_delim(i,
"|",
skip = 6,
escape_double = FALSE,
trim_ws = TRUE),
"col1","col2",......),
!is.na(col1) & col2 != 'something'),
paste0(unlist(strsplit(i,"\\."))[1], ".xlsx"))
}