博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html

 -------

经过周末一个半天的努力,终于把这次的Assignment3做出来,然后做完Quiz4,顺利结束R Programming这门课程。

对这门课的综合吐槽就是,Roger老师的github头像好帅,动态视频更帅,视频内容还算充足,但远远不足以应付assignment。Assignment设计一个比一个精巧,难度一个比一个大,没有足够的耐性以及一定的基础,还真的很难独自应付完R Programming这门课。如果不是我买了付费证书,以及工作中确实需要R,估计学着学着就废掉了吧……

但是话说回来,这门课的assignment设计的还是颇为精巧的。

Swirl,

这个是个包,带我们了解R的大部分内容。调用library(swirl), swirl()即可。R初学者请一定学习学习!设计极好!

Assignment1,

带我们初步了解了循环,以及数据读取和rbind。精华语句是以下两段(代码已修改,以避免泄题)。在这里,初步涉及了函数的编写,循环的使用,以及数据框类型的先定义和rbind语句。同时在某个函数里通过threhold的引用,引入了if else结构。

https://github.com/derekfranks/practice_assignment/blob/master/practice_assignment.rmd

上面的github教程是我见过最好的指导教程,没有它,assignment1就跪了。

 files_list<-list.files(directory,full.names=TRUE)

#read file list & cycle reading data

dat<-data.frame()
for (i in id){
id=i
new1=sum(read.csv(files_list[i]))
dat<-rbind(dat,new1)
}

Assignment2,

这个的精华在于对词法作用域的介绍,并介绍了函数缓存值,虚拟函数,函数内变量,以及<<-的使用。不过从代码的角度来说,示例的实际应用意义不大。倒不如quiz里涉及的东西全面。但好好消化以后,会发现对词法作用域有了较深的理解,在之后用sapply, lapply, tapply等函数时,也比较敢于编程了。

        set <- function(y){
x<<-y
m<<-NULL setSolve <- function(solve) m<<-solve

Assignment3,这道题由3个部分组成,除了第二部分外,剩下两部分都要耗时4-5个小时思考……不愧是压轴的assignment,做到让人近似崩溃。但是这个也是对R知识应用最综合的题目。前面两部分要用到的函数,以及方法,在本次assignment3里都被拎出来

整理一下:

1)数据框,我们经常会用split按照某个变量拆分数据框,这样会出来一系列由data.frame组合的list。

如果用data[i],只会拿到一堆list,只有用data[[i]]才能拿到原本的data.frame格式。这是为什么以下代码可以生效的原因。

data_split<-split(data_complete,data_complete$State)

 new1<-cbind(data_order[[i]],rank)

2)数据框筛选,我们要么用==直接获得等于某个数值的数据库,要么我们可以利用!any或者all函数来判断,某个值是否在数据框里,如果不在,弹出错误信息。但是注意,这里由于循环补齐的原因,num,outcome以单个字符/数字为佳。向量要用其他方法。

final<-r[r$rank==num,]

 if (!any(colname==outcome)){
stop("invalid outcome")

3)关于numeric函数,如果一个数据里有一堆ta,1,2,3,4, not avilalbe,使用as.numeric可以快速的把非数值函数转化为NA。这样才可以加入计算。(对于取整,用as.integer效率奇佳)

 var<-as.numeric(list[colname==outcome,1])

4)利用colnames(x)<-c(ddd,ddd)可以给数据库快速命名

 colnames(final)<-c("hospital","state")

5)关于排序,先获得split的函数后,使用lapply可以快速对数据进行排序。然后用rbind,[[i]]又可以快速结合回来

data_order<-lapply(data_split,function(x) x[order(x[,3],x[,1]),])

6)关于1:length。之前在这里考死了很多回。后来发现,如果nrow()-1<-0,NA的话,用2:nrow-1会返回一个2,1,0向量。这样,在循环补齐时就会报错。而且是报很多错。然后if else, else一定要接在}后面,另起一行的话,R也很容易报错<--论良好的函数书写习惯的重要性。

 if (nrow(xx[[i]])==1) {
rank=c("a")
} else {
if (nrow(data_order[[i]])==2){
rank=c("a","d")
}else {
rank=c("a",2:(nrow(data_order[[i]])-1),"d")}}

综上,这是我在做assignment3里被踩过的若干个坑……

感谢我终于出来了

谢谢JHU贡献的这么有操作意义的R Programming的课程,接下来打算继续跟着学习cleanning data,听说assignment也很难ε(罒ω罒)з。。。。给跪

最后补充一下

当全身心投入一门课的学习时,会觉得时间过得很快,也很充实。之后不会再迷茫了。数据分析,其实就是多学,多练,多思考,多做码农。庆幸我开始的还不算太晚。

以及,因为这个月太沉迷于R,被同事吐槽说,一整天扑在编程还有R上,怪不得你没有男朋友……单身狗内牛满面……

博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html

 

Coursera系列-R Programming-Final Week-Assignment3 & 总结的更多相关文章

  1. Coursera系列-R Programming第二周

    博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html  --- 好久没发博客 且容我大吼一句 终于做完这周R Progra ...

  2. Coursera系列-R Programming第三周-词法作用域

    完成R Programming第三周 这周作业有点绕,更多地是通过一个缓存逆矩阵的案例,向我们示范[词法作用域 Lexical Scopping]的功效.但是作业里给出的函数有点绕口,花费了我们蛮多心 ...

  3. 让reddit/r/programming炸锅的一个帖子,还是挺有意思的

    这是原帖 http://www.reddit.com/r/programming/comments/358tnp/five_programming_problems_every_software_en ...

  4. [R] [Johns Hopkins] R Programming 作業 Week 2 - Air Pollution

    Introduction For this first programming assignment you will write three functions that are meant to ...

  5. R Programming week 3-Loop functions

    Looping on the Command Line Writing for, while loops is useful when programming but not particularly ...

  6. 从零开始系列-R语言基础学习笔记之二 数据结构(二)

    在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...

  7. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  8. R programming, In ks.test(x, y) : p-value will be approximate in the presence of ties

    Warning message: In ks.test(x, y) : p-value will be approximate in the presence of ties   The warnin ...

  9. [R] [Johns Hopkins] R Programming -- week 3

    library(datasets) head(airquality) #按月分組 s <- split(airquality, airquality$Month) str(s) summary( ...

随机推荐

  1. 【来至百度百科】linux文件结构

    文件结构 /:根目录,所有的目录.文件.设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者. /bin:bin 就是二进制(binary)英文缩写.在一般的系统当中,都可以在这个目录 ...

  2. 报表软件JS开发引用HTML DOM的windows对象

    HTML DOM是W3C标准(是HTML文档对象模型的英文缩写,Document Object Model for HTML). HTML DOM定义了用于HTML的一些列标准的对象,以及访问和处理H ...

  3. noip2010提高组3题题解 by rLq

    本题地址http://www.luogu.org/problem/show?pid=1525 关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N.他们之间的关系自然也极不和 ...

  4. MIT研发的新型匿名网络Riffle,下一个Tor

    现在的隐私问题是一个网络热词,如果你担心你上网的隐私会泄露,最有效的解决办法就是使用Tor.这款免费的匿名通信软件,能够让人们在与其他人通信时隐藏自己真实的信息. 虽然Tor是一个很好的匿名网络系统, ...

  5. 洛谷P1330封锁阳光大学[二分图染色]

    题目描述 曹是一只爱刷街的老曹,暑假期间,他每天都欢快地在阳光大学的校园里刷街.河蟹看到欢快的曹,感到不爽.河蟹决定封锁阳光大学,不让曹刷街. 阳光大学的校园是一张由N个点构成的无向图,N个点之间由M ...

  6. python-异常处理

    一.异常 异常是什么? 就是影响程序正常执行的事件,异常在程序执行的过程中发生,脚本发生异常时,我们需要捕获它,否则程序就会终止. 异常处理: 1.捕获异常:try:...except ..... w ...

  7. 使用axis2 soapmonitor监控soap数据

    Using the SOAP Monitor SOAPMonitor使用 使用SOAPMonitor axis2开发笔记-消息监控 WebService大讲堂之Axis2(10):使用soapmoni ...

  8. vector容器删除某些元素且释放内存

    1,size和capacity size: 指目前容器中实际有多少元素,对应的resize(size_type)会在容器尾添加或删除一些元素,来调整容器中实际的内容,使容器达到指定的大小. capac ...

  9. [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】

    [课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...

  10. CSS基本知识1-CSS基本概念

    CSS基本概念: 选择器{属性:值;属性:值} CSS继承:子元素继承父元素样式,父子关系看DOM结构. CSS覆盖: 浏览器缺省设置 外部样式表 内部样式表(位于 <head> 标签内部 ...