博客总目录,记录学习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

 

最新文章

  1. Handlebars.js循环中索引(@index)使用技巧(访问父级索引)
  2. 关于 QRCode 的问题[C# 生成二维码固定大小]
  3. 20145211 《Java程序设计》第1周学习总结——小荷才露尖尖角
  4. jrae源代码解析(二)
  5. 服务端生成word并压缩打包下载
  6. 使用MySQL处理百万级以上数据时,不得不知道的几个常识
  7. python-大话装饰器
  8. Java框架概述
  9. Java虚拟机说明书
  10. BZOJ_2595_[Wc2008]游览计划_斯坦纳树
  11. codeforces342B
  12. 【Sublime Text】sublime text 安装插件方法总结
  13. Windows本地解决MySql插入中文乱码问题
  14. Atitit r2017 r6 doc list on home ntpc.docx
  15. activity和fragment之前运行的生命周期
  16. 一些程序OEP入口特征
  17. unity里面的gameobject和transform的关系
  18. 让PHP更快的提供文件下载
  19. 【BZOJ】2142 礼物
  20. 【学步者日记】C#反射中NonPublic和Instance需要一起使用

热门文章

  1. nginx $document_uri 防止死循环
  2. centos yum update kernel
  3. C# 将绝对路径转换为相对路径
  4. OAuth协议——PHP第三方登陆协议
  5. 兼容可控硅调光的一款LED驱动电路记录
  6. POJ2985 The k-th Largest Group[树状数组求第k大值+并查集||treap+并查集]
  7. NOIP模拟赛20161007
  8. [No000067]Js中获取当前页面的滚动条纵坐标位置scrollTop
  9. Threejs 物体闪烁
  10. Spring自动注入properties文件