Я изучаю R atm, одним из упражнений является создание программы для чтения среднего значения для столбца «сульфат» или столбца «нитрат». Тем не менее, я смогу получить правильное среднее значение только для одного из столбцов, а не для всех. Не могли бы вы дать мне некоторую помощь о том, как поднабор для каждого столбца при вычислении среднего значения?
Следуя шагам, которые я предпринял для объединения упражнения 1. Создайте список файлов # Объедините все файлы в одни данные Рамка. 2. создать пустой фрейм данных 3. перебрать файлы, затем связать их вместе 4. установить под фрейм данных 5. вычислить среднее для столбца (ов)
pollutantmean <- function(directory,pollutant,id=1:132){
files_list <- list.files(directory, full.names=TRUE) #creates a list of files
dat <- data.frame() #creates an empty data frame
for (i in 1:132) {
#loops through the files, rbinding them together
dat <- rbind(dat, read.csv(files_list[i]))
}
dat_subset <- dat[which(dat$ID %in% id),names(dat) %in% c("sulfate","nitrate")]
mean(dat_subset[, "sulfate"], na.rm=TRUE) #identifies the mean while stripping out the NAs for "sulfate"
mean(dat_subset[, "nitrate"], na.rm=TRUE) #identifies the mean while stripping out the NAs for "nitrate"
}
Ожидаемый результат:
pollutantmean("specdata", "sulfate", 1:10) ## [1] 4.064128
pollutantmean("specdata", "nitrate", 70:72) ## [1] 1.706047
pollutantmean("specdata", "nitrate", 23) ## [1] 1.280833
Фактический вывод:
![enter image description here](https://i.stack.imgur.com/mIgJy.png)
Я также пытался исправить это, комбинируя два столбцы в один, он будет возвращать NaN вместо ...
mean(dat_subset[,c("sulfate","nitrate")], na.rm=TRUE)