Coursera课程-r语言-程序作业1
来源:互联网 发布:c语言死机病毒怎么处理 编辑:程序博客网 时间:2024/06/05 06:30
题目介绍:
r语言课程的第一个程序作业。将要编写3个函数。实验数据为“美国大气污染”的数据,可以从Coursera上下载,下载后的文件为zip文件。需要自行解压缩并添加到你的作业项目中。
数据介绍:
zip文件可以从这里下载:
specdata.zip [2.4MB]
这个zip文件中包含了332个csv文件。csv文件中记录着检测大气质量的数据,记录着美国332个地区的“细微颗粒值(PM值)”。每个csv文件中代表着一个监测地区的记录。例如:地区200的大气数据,记录在文件“200.csv”中。每个文件包含三个变量:
-Date:date的数据以“YYYY-MM-DD”的方式存储
-sulfate:空气中硫化物颗粒水平
-nitrate:空气中硝化物颗粒水平
本作业中,你需要解压缩这个zip文件,并保存在目录名为“specdata”的文件夹下。你可以打开csv文件观察数据,你会发现里面包含着很多空值,这在空气质量监控的数据集中非常常见。
Part1
第一部分功能介绍:
编写一个函数“pollutantmean”能够计算指定文件列表中所有大气数据的污染物(sulfate或者nitrate)的均值。这个函数有三个属性,分别是’directory’、’pollutant’和’id’。’directory’代表文件目录,’pollutant’代表污染物的名称,’id’代表文件序列,是一个数值向量。注意,在数据处理中,你需要去掉空值。
第一部分程序实现:
pollutantmean <- function(directory, pollutant, id = 1:332) { filenames<-dir(directory, full.names=T) n<-length(id) m<-rep(0,n) ct<-rep(0,n) for(i in id){ data<-read.csv(filenames[i],header=TRUE) ct[match(i,id)]<-sum(!is.na(data[pollutant])) m[match(i,id)]<-mean(as.matrix(data[pollutant]),na.rm=TRUE) } result<-(m[ct>0] %*% ct[ct>0])[1,1]/sum(ct[ct>0]) result }
第一部分程序运行结果:
> source("pollutantmean.R")> pollutantmean("specdata", "sulfate", 1:10)[1] 4.064128> pollutantmean("specdata", "nitrate", 70:72)[1] 1.706047> pollutantmean("specdata", "nitrate", 23)[1] 1.280833
Part2
第二部分功能介绍:
编写一个函数“complete”读取文件目录下的所有文件,计算每个csv文件中完整的记录数(每条记录都不包含空值)。函数需要返回一个dataframe,第一列为文件id,第二列为记录数nobs。
第二部分程序实现:
complete <- function(directory, id = 1:332) { files_list <- dir(directory, full.names=T)[id] data_list<-lapply(files_list,read.csv) nobs<-sapply(lapply(data_list,complete.cases),sum) result<-as.data.frame(cbind(id,nobs)) result}
第二部分程序运行结果:
> source("complete.R")> complete("specdata", 1) id nobs1 1 117> complete("specdata", c(2, 4, 8, 10, 12)) id nobs1 2 10412 4 4743 8 1924 10 1485 12 96> complete("specdata", 30:25) id nobs1 30 9322 29 7113 28 4754 27 3385 26 5866 25 463> complete("specdata", 3) id nobs1 3 243
Part3
第三部分功能介绍:
编写一个函数“corr”,读取指定文件目录下的文件,当csv文件中完整的记录数超过预设的阀值时,计算该文件中sulfate和nitrate的相关系数。这个函数最后需要返回一个相关系数向量。
第三部分程序实现:
corr <- function(directory, threshold = 0) { source("complete.R") IN<-complete(directory,id = 1:332) id<-as.vector(IN[IN$nobs>threshold,"id"]) result<-c() for(i in id){ files_list <- dir(directory, full.names=T)[i] data<-read.csv(files_list,header=TRUE) dataNoNA<-na.omit(data) corrresult<-cor(dataNoNA$sulfate,dataNoNA$nitrate) result<-c(result,corrresult) } result}
第三部分程序运行结果:
> source("corr.R")> source("complete.R")> cr <- corr("specdata", 150)> head(cr)[1] -0.01895754 -0.14051254 -0.04389737 -0.06815956 -0.12350667[6] -0.07588814> summary(cr) Min. 1st Qu. Median Mean 3rd Qu. Max. -0.21060 -0.04999 0.09463 0.12530 0.26840 0.76310 > cr <- corr("specdata", 400)> head(cr)[1] -0.01895754 -0.04389737 -0.06815956 -0.07588814 0.76312884[6] -0.15782860> summary(cr) Min. 1st Qu. Median Mean 3rd Qu. Max. -0.17620 -0.03109 0.10020 0.13970 0.26850 0.76310 > cr <- corr("specdata", 5000)> summary(cr)Length Class Mode 0 NULL NULL > length(cr)[1] 0> cr <- corr("specdata")> summary(cr) Min. 1st Qu. Median Mean 3rd Qu. Max. -1.00000 -0.05282 0.10720 0.13680 0.27830 1.00000 > length(cr)[1] 323
完成这个作业还是花了蛮多时间的,但是最终完成还是很有成就感的。fighting!!!
转载请注明作者“MieAn100”及其出处
CSDN博客(http://blog.csdn.net/MieAn100)
- Coursera课程-r语言-程序作业1
- Coursera上的R语言课程
- Coursera吴恩达机器学习课程 编程作业
- Coursera吴恩达机器学习课程 总结笔记及作业代码——第1,2周
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业(1-2)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业(1-3)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业(1-4)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业(2-1)
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业(4-1)
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)Python3.x
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)Python3.x (补)
- 程序课程作业
- Coursera课程 R-Programming Week1 编程练习代码
- Coursera吴恩达机器学习课程 第2周作业代码
- Coursera Machine Learning机器学习课程编程作业参考答案
- 斯坦福机器学习Coursera课程:第三周作业--逻辑回归
- Coursera课程:Python for everyone chapter 1
- Coursera Big Data系列课程笔记1
- BZOJ1207【HNOI2004】打地鼠
- iptables 的mangle表
- LayoutInflater动态载入
- 友元类
- [NineChap 1.1] strStr and Coding Style
- Coursera课程-r语言-程序作业1
- linux里的shell环境变量
- Android——Intent启动
- python安装beautifulsoup
- VC编辑控件Edit基本操作
- 获取CPUID信息
- (4.4.1.4)图片缓存之内存缓存技术LruCache,软引用
- c++ map 插入元素过程分析
- 《C语言及程序设计》实践项目——循环嵌套