【发布时间】:2014-07-07 23:32:29
【问题描述】:
我正在使用的 CSV 文件的 zip 链接:
https://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip
代码:
getpollutant <- function(id=1:332, directory, pollutant) {
data<-NULL
for (i in 1:length(id)) {
data[[i]]<- c(paste(directory, "/",formatC(id[i], width=3, flag=0),".csv",sep=""))
}
df<-NULL
for (d in 1:length(data)) { df[[d]]<-c(read.csv(data[d]))
}
m<-NULL
for (i in 1:length(df)) {
if (pollutant=="nitrate"){
m<-mean(df[[i]]$nitrate, na.rm=T)
}
if (pollutant=="sulfate"){
m<-mean(df[[i]]$sulfate, na.rm=T)
}
}
m
}
当我使用 getpollutant 计算 1 个文件的硝酸盐或硫酸盐污染物平均值时,我得到了正确答案,但由于某种原因,当我尝试输入一系列文件时,我得到的平均值太高,我觉得它必须处理 NA 值的方式,但我找不到在平均计算中包含 NA 值的方法
【问题讨论】:
-
如果您希望包含 NA 值,请先编写一个新数据框,在其中将 NA 值替换为 0,例如
df$nitrate[is.na(df$nitrate)] <- 0.
标签: r csv concatenation mean na