从文件夹加载多个文件作为循环

时间:2020-06-08 19:11:45

标签: r

我在一个文件夹中有多个文件,可以将它们加载到R中并进行操作,然后另存为data.table。有没有一种方法可以通过定义要加载的文件来自动进行输入和输出?

文件夹中的文件:

data1.xlsx
data2.xlsx
data3.xlsx

我的脚本:

data1.d = read.xls("data1.xlsx", sheet = 5, header = TRUE)
data1.d$Date <- format(as.Date(data1.d$Date, format = "%Y-%m-%d"), "%m/%d/%Y")
data1.d$Time <- "17:00:00"
data1.d$OI <- "1"
write.table(data1.d, file="data1.Ready.txt", col.names = T, quote = F,sep=",",row.names = F)

1 个答案:

答案 0 :(得分:2)

我们可以使用list.filesdir从目录中获取文件列表,必要时指定pattern,并用files遍历imap ,使用read_excelreadxl包)读取excel文件,使用mutate创建列,并在通过替换替换文件名后使用write.table将其写回到新文件.xlsxstr_remove)并将结尾的'.Ready.txt'与str_c

连接
files <- list.files(pattern = '^data\\d+\\.xlsx$')
library(readxl)
library(purrr)
library(stringr)
imap(set_names(files, files), ~ read_excel(.x, sheet = 5) %>%             
             mutate(Date = format(ymd(Date), "%m/%d/%Y"),
             Time = "17:00:00", OI = "1") %>%
            select(1,8,2,3,4,5,6,7) %>%
            set_names(c("Date","Time","Open","High","Low","Close","Vol","OI")) %>%
             write.table(file = str_c(str_remove(.y, "\\.xlsx"), 
        ".Ready.txt"), col.names = TRUE, quote = FASLE, sep=",", 
         row.names = FALSE))
相关问题