У вас есть большинство шагов. Вам просто нужно обобщить их с помощью функции, применяемой ко всем файлам в каталоге. Я предлагаю вам следующее. Кстати, вы загружаете слишком много пакетов: поскольку вы используете fread
, придерживайтесь подхода data.table
.
library(data.table)
files <- list.files("C:/Users/shegu/Desktop/",
full.names = TRUE, pattern = ".csv")
clean_file <- function(filename){
data <- fread(filename, sep="|",header=FALSE, stringsAsFactors = TRUE)
#### Renaming cols
data.table::setnames(data, new = c("Trading_Session", "Scrip_Code", "Buy_Sell",
"Order_Type", "Rate_in_Paise", "Quantity","Avl_Quantity", "Order_Time_Stamp",
"Retention", "AUD_Code", "Order_ID", "Action_ID", "Error_Code","ALGO_Flag"),
old = colnames(data)
)
data[, Order_Time_Stamp := as.Date(Order_Time_Stamp, "%Y-%m-%d %H:%M:%S")]
data[, Scrip_Code := as.factor(Scrip_Code)]
data[, Order_ID := as.factor(Order_ID)]
#### Performing Group-by operation (this needs to be done on each file in my folder)
myfile_by_AUD_Code <- data[, .(nobs = .N) ,by = c("Scrip_Code","ALGO_Flag","AUD_Code")]
### Write file
fwrite(myfile_by_AUD_Code, gsub(".csv","_summary.csv",filename))
return(NULL)
}
lapply(files,clean_file)
имена файлов определяются с помощью функции list.files
. Я добавляю аргумент шаблона, чтобы обеспечить перечисление только csv
файлов. Добавьте другие элементы, если в вашем каталоге есть файлы, которые вы не хотите читать.
Я предложил вам записать файлы как old_filename_summary.csv
Измените эту строку, если она вам не подходит.
Остальное - просто трагедия в data.table
вашего примера