我想寫的R腳本,根據從一個數據或更多的332個監測站指定污染物(硝酸鹽或硫酸鹽)的平均平均值。每個電臺的數據保存在一個單獨的文件中,編號爲1:332。我是R新手,爲了公平對待任何選擇幫助我的人,我應該說這是一個家庭作業問題。我已經寫了下面的腳本,它適用於只有一個文件:計算在多個文件中保存的數據
pollutantmean <- function(directory, pollutant, id = 1:332) {
filepath <- "/Users/jim/Documents/Coursera/2_R_Prog/Data"
for(i in seq_along(id)) {
if(id < 10) {
name <- paste("00", id[i], sep = "")
}
if(id >= 10 && id < 100) {
name <- paste("0", id[i], sep = "")
}
if(id >= 100) {
name <- id[i]
}
}
file <- paste(name, "csv", sep = ".")
station <- paste(filepath, directory, file, sep = "/")
monitor <- read.csv(station)
if(pollutant == "nitrate") {
x <- mean(monitor$nitrate, na.rm = T)
}
if(pollutant == "sulfate") {
x <- mean(monitor$sulfate, na.rm = T)
}
x
}
但是,如果我輸入多個文件(如70:72)我得到的平均值爲最後的文件只(72)。這表明它正在計算每個文件的平均值,然後用下一個文件的平均值覆蓋它,以便只輸出最後一個文件的平均值。我可以使用rbind()來解決這個問題,但我無法弄清楚如何爲每個變量分配唯一的名稱,然後這些變量就會成爲rbind()的參數。我會很感激任何人可以提供的幫助。 乾杯, 吉姆
http://stackoverflow.com/questions/23640594/reading-multiple-files-and-calculating-mean-based-on-user-input – user227710
你不」遍歷您的文件! –
謝謝你的幫助,朱利安。你給了我關於'sprintf'和使用循環的有用建議。但是,你的代碼給出了與'length(id)'相同數量的方法。我最終需要的僅僅是一個平均值,所以我需要找到某種方法將所有數據放入一個單獨的向量,然後從中計算平均值。 –