Мне нужно сформировать данные, хранящиеся в файлах Excel, и сохранить их как новые файлы .csv.Я понял, какие конкретные действия должны быть выполнены, но не могу понять, как использовать lapply.
Все файлы Excell имеют одинаковую структуру.Каждый из файлов .csv должен иметь имя исходных файлов.
## the original actions successfully performed on a single file
library(readxl)
library("reshape2")
DataSource <- read_excel("File1.xlsx", sheet = "Sheet10")
DataShaped <- melt (подмножество (DataSource [- (1),], select = - c (ng)), id.vars = c ("itemname", "week")) </p>
write.csv2(DataShaped, "C:/Users/Ol/Desktop/Meta/File1.csv")
## my attempt to apply to the rest of the files in the directory
lapply(Files, function (i){write.csv2((melt(subset(read_excel(i,sheet = "Sheet10")[-(1),], select = - c(ng)), id.vars = c ("itemname","week"))))})
R возвращает результат на консоль, но не создает никаких файлов.Результат напоминает структуру .csv.
Кто-нибудь может объяснить, что я делаю не так?Я новичок в R, буду очень признателен за помощь
Ответ
Благодаря быстрому ответу @Parfait код работает!Так рад.Вот оно:
library(readxl)
library(reshape2)
Files <- list.files(full.names = TRUE)
lapply(Files, function(i) {
write.csv2(
melt(subset(read_excel(i, sheet = "Decomp_Val")[-(1),],
select = -c(ng)),id.vars = c("itemname","week")),
file = paste0(sub(".xlsx", ".csv",i)))
})
Читает файл Excel в каталоге, удаляет первую строку (но заголовки) и столбец с именем «ng», расплавляет данные по меткам «itemname» и «week»,записывает результат в виде .csv в рабочий каталог с указанием имени исходного файла.А потом - промыть и повторить.