このトピックのさまざまなスレッドでヘルプを検索した後、私はまだ賢くなっていません。したがって、複数のデータファイルをループする際の別の質問があります。複数のcsvからデータフレームまでの平均値
OK。私は1つのフォルダに5列のデータを含む複数のCSVファイルを持っています。以下のようにファイル名は以下のとおりです。
モイストYYYYMMDD hh_mm_ss.csv
私は、次の手順やって1によりプロセスCSV-ファイル1を読み込み、スクリプトを作成したいと思います:
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