После поиска помощи в разных потоках по этой теме я по-прежнему не стал мудрее. Поэтому: Здесь возникает еще один вопрос о циклическом перемещении нескольких файлов данных ...Средние значения от нескольких кадров csv до данных
OK. У меня есть несколько файлов CSV в одной папке, содержащей 5 столбцов данных. Имена файлов следующим образом:
Влажный ггггммдд hh_mm_ss.csv
Я хотел бы создать сценарий, который считывает обрабатывает CSV-файлы один за другим делать следующие шаги:
1) загрузить файл 2) проверить количество строк и исключить файл, если менее 3 регистраций 3) рассчитать среднее значение всех измерений (= строк) для столбца 2 4) рассчитать среднее значение всех измерений (= строк) для столбца 4 5) выход временная метка имени файла, средняя колонка 2 и средняя колонка 4 для кадра данных,
я написал следующую функцию
moist.each.mean <- function() {
library("tcltk")
directory <- tk_choose.dir("","Choose folder for Humidity data files")
setwd(directory)
filelist <- list.files(path = directory)
filetitles <- regmatches(filelist, regexpr("[0-9].*[0-9]", filelist))
mdf <- data.frame(timestamp=character(), humidity=numeric(), temp=numeric())
for(i in 1:length(filelist)){
file.in[[i]] <- read.csv(filelist[i], header=F)
if (nrow(file.in[[i]]<3)){
print("discard")
} else {
newrow <- c(filetitles[[i]], round(mean(file.in[[i]]$V2),1), round(mean(file.in[[i]]$V4),1))
mdf <- rbind(mdf, newrow)
}
}
names(mdf) <- c("timestamp", "humidity", "temp")
}
, но я получаю сообщение об ошибке:
Error in `[[<-.data.frame`(`*tmp*`, i, value = list(V1 = c(10519949L, :
replacement has 18 rows, data has 17
Есть идеи?
Thx, kruemelprinz
где указано 'file.in'? –
Я не знаю, как его определить, к сожалению. Я уже много изо всех сил пытался зайти так далеко ... file.in предназначен для временного объекта для загрузки в определенном csv, пока он не будет перезаписан следующим обрабатываемым файлом. – kruemelprinz