全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4233 3
2016-03-29
我在做coursea的作业的时候发现如果我用mean求的答案跟用普通的数学公式求的均值不同,大神能帮我看看哪里出错了吗,以下是两个程序:红色部分就是有疑问的地方,根据答案来看,第二个程序的答案才是对的
pollutantmean<- function(directory, pollutant, id=1:332) {

        total=0
        observations=0
        for (i in id){
        if (i<10){
                data<-read.csv(paste("0","0",as.character(i),".csv",sep=""),
                         header =TRUE,
                         na.strings=c("NA","NaN","")
                )
        }
        else if (i>=10 & i<100) {
                data<-read.csv(paste("0",as.character(i),".csv",sep=""),
                         header =TRUE,
                         na.strings=c("NA","NaN","")
                )
        }

        else {
                data<-read.csv(paste(as.character(i),".csv",sep=""),
                         header =TRUE,
                         na.strings=c("NA","NaN",""))
        }
data=na.omit(data)
observations = observations + nrow(data)
if (pollutant == "sulfate") { return(mean(data$sulfate))}
else {return(mean(data$nitrate))}
}

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
pollutantmean <- function(directory, pollutant, id = 1:332) {


        total = 0                        
        observations = 0                  

        for (i in id)
        {
                if (i <10) {
                        data <- read.csv(paste("0","0", as.character(i), ".csv", sep=""),  ## for example, if 'id' =7, we get 007.csv
                                         header = T,
                                         na.strings=c("NA","NaN", " "))
                }

                else if (i>=10 & i<100) {
                        data <- read.csv(paste("0", as.character(i), ".csv", sep=""),  ## for example, if 'id' = 17, we get 017.csv
                                         header = T,
                                         na.strings=c("NA","NaN", " ")
                        )
                }



                else       {
                        data <- read.csv(paste(as.character(i), ".csv", sep=""),     ## Normal
                                         header = T,
                                         na.strings=c("NA","NaN", " ")
                        )
                }

                data = na.omit(data)   
                observations = observations + nrow(data)
                if (pollutant == "sulfate") {total = total + sum(data$sulfate)}
                else {total = total + sum(data$nitrate)}
        }
       return(total/observations)

}


附件列表

specdata.zip

大小:2.81 MB

 马上下载

所用数据

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-3-29 07:22:19
结果应该是一样的,如果你能把数据放上来,或者发消息给我,就可以试一下,从表面上看不出来有什么不同
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-3-29 07:59:46
cmwei333 发表于 2016-3-29 07:22
结果应该是一样的,如果你能把数据放上来,或者发消息给我,就可以试一下,从表面上看不出来有什么不同
我把那个用到的数据都放到上面去了,答案是这样的
pollutantmean("specdata", "sulfate", 1:10)
## [1] 4.064
pollutantmean("specdata", "nitrate", 70:72)
## [1] 1.706
麻烦您了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-7-16 18:06:17
应该这样写mean(c(93,62,51,93,75,82,93,62,65,51))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群