Coursera-Getting and Cleaning Data-Week3

Wednesday, February 04, 2015

好久不写笔记了,年底略忙。。

Getting and Cleaning Data第三周其实没什么好说的,一个quiz,一个project,加一个swirl。

基本上swirl已经把第三周的内容都概括进去了。就是dplyr, tidyr以及lubridate包的学习和使用。其中dplyr专注于选择/筛选,tidyr关注于数据重塑型,二lubridate是我目前接触过的最好用的R中处理时间的包。

这三个包都是Hadley Wickam开发的,秉承了这系列包简洁,实用,好理解的特点。dplyr包尤其像sql语句,select, group_by什么的,有sql基础的人理解起来不会很难。

该系列swirl安装代码如下:

library(swirl)
install_from_swirl("Getting and Cleaning Data")

关于dplyr,swirl本身已经写得很详尽了。不过开发者有自己的一个总结。我最开始是在一个人的微博里看到这张图的。然后追本索源发现,它原载于Rstudio官网Cheatsheets网页。里面还有markdown/Shiny包的快捷应用图像,值得初学者打印一整张下来好好学习。

dplyr+tidyr

总结一下dplyr+tidyr的应用,就是:

1)筛选/选择数据: select, filter。其中select选择列,filter添加筛选条件(类似于SQL中的where).select里有如select(iris,contains/ends_with/everthing等快速筛选用法。这个在上文所提的Cheatsheets里有,不再综述。

2)整合数据,类似于reshape2:gather(从宽变窄),spread(从窄变宽),可以快速改变数据结构。

3)数据排序/命名:arrange(行排序),rename(重命名列)

4)添加删除变量,多表查询:mutate(列,类似于cbind),transmute(几列并行),join, left_join等。

同时,因为他们系出同门,我们可以用%>%来简化代码,避免重复输入。

lubridate

关于lubridate包,常用的为:

1)指定格式的数据输出,如ymd("20110604")mdy("06-04-2011")等,只要指定好ymdhms的顺序,R可以协助识别许多数据

2)常见数据的处理,如second(arrive),wday(arrive),并可添加时区(tz)

3)计算区间,如interval(arrive,leave,tz="Pacific/Auckland"),

需要注意的是,这个包的使用涉及了R时区的概念。如果你是中文系统,发现你的monday, sunday被系统自动替换成周一周日等中文字符的话,请看时区设置Sys.setlocale。 我是windows系统,所以改成英文的话是Sys.setlocale("LC_TIME","English")。这个在接下来的画图课里有一定的用处。

基本上过了一遍swirl后,quiz不是大问题。

Project

关于project,中英文一起看吧,题目写得有点简略了,但是重点是探索的过程。

我们那个超级好人超级NICE的TA David Hood在讨论区里曾发过一张图给看不懂题目的人解释一下数据结构。因为TA都在讨论区发过了,所以我觉得可以共享一下。

这里需要注意,老师满强调tidy data的概念。不管是宽的数据还是短的数据,只要符合tidy data规则,都算tidy data。各位有兴趣可以回去啃啃Hadley的那个PDF。

之前跟Q群的人讨论这个project时,看到有四种处理该project某一问的方法。包括简洁的group_by+summarize_each,或者绕一个圈的gather+group_by+summarize+spread组合,还有用reshape2的melt+dcsat组合,以及R programming里面着重介绍的循环+apply/lapply组合。有兴趣的可以自行尝试~~

在数据分析里,数据处理是一个苦差事。有人说一个数据挖掘项目,可能数据处理会占用60-70%甚至更多的时间,建模什么的,一旦数据处理好了,就很快,因为常用且经过时间验证的可靠模型也就那么几种。同时这个数据处理,也是了解业务的一个重要途径。所以这门课还是不可或缺的。我的博客

Coursera-Getting and Cleaning Data-Week3-dplyr+tidyr+lubridate的组合拳的更多相关文章

  1. Cleaning Data in R

    目录 R 中清洗数据 常见三种查看数据的函数 Exploring raw data 使用dplyr包里面的glimpse函数查看数据结构 \(提取指定元素 ```{r} # Histogram of ...

  2. 【Python学习笔记】Coursera课程《Python Data Structures》 密歇根大学 Charles Severance——Week6 Tuple课堂笔记

    Coursera课程<Python Data Structures> 密歇根大学 Charles Severance Week6 Tuple 10 Tuples 10.1 Tuples A ...

  3. 学习笔记(四): Representation:Feature Engineering/Qualities of Good Features/Cleaning Data/Feature Sets

    目录 Representation Feature Engineering Mapping Raw Data to Features Mapping numeric values Mapping ca ...

  4. Joining Data with dplyr in R

    目录 inner_join Joining three tables left_join right-join full_join semi- and anti-join Stack Overflow ...

  5. Coursera课程笔记----C++程序设计----Week3

    类和对象(Week 3) 内联成员函数和重载成员函数 内联成员函数 inline + 成员函数 整个函数题出现在类定义内部 class B{ inline void func1(); //方式1 vo ...

  6. Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...

  7. The dplyr package has been updated with new data manipulation commands for filters, joins and set operations.(转)

    dplyr 0.4.0 January 9, 2015 in Uncategorized I’m very pleased to announce that dplyr 0.4.0 is now av ...

  8. data cleaning

    Cleaning data in Python   Table of Contents Set up environments Data analysis packages in Python Cle ...

  9. Coursera-Getting and Cleaning Data-week1-课程笔记

    博客总目录,记录学习R与数据分析的一切:http://www.cnblogs.com/weibaar/p/4507801.html -- Sunday, January 11, 2015 课程概述 G ...

随机推荐

  1. jquery——移动端滚动条插件iScroll.js

    官网:http://cubiq.org/iscroll-5 demo: 滚动刷新:http://cubiq.org/dropbox/iscroll4/examples/pull-to-refresh/ ...

  2. 开放api接口签名验证

    不要急,源代码分享在最底部,先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候, ...

  3. LCA 倍增||树链剖分

    方法1:倍增 1498ms #include <iostream> #include <cstdio> #include <algorithm> #include ...

  4. POJ3250[USACO2006Nov]Bad Hair Day[单调栈]

    Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17774   Accepted: 6000 Des ...

  5. Ajax与json

    Ajax Ajax简介 Ajax技术,从用户发送请求到获取响应,当用户界面在整个过程中不会受到干扰,而且我们可以在必要的时候只刷新页面的一小部分,而不用刷新整个页面,即"无刷新"技 ...

  6. ireport制作小技巧<Reproduce>

    首先ireport中大小写问题: 1.parameter中如果小写,引用也小写 2.$F{},一般都大写 3.子报表中引用父报表中查询出来的值时,只需要小写即可,即在子报表的parameter中只需要 ...

  7. Web前端之复选框选中属性

    熟悉web前端开发的人都知道,判断复选框是否选中是经常做的事情,判断的方法很多,但是开发过程中常常忽略了这些方法的兼容性,而是实现效果就好 了.博主之前用户不少方法,经常Google到一些这个不好那个 ...

  8. 【LeetCode】241. Different Ways to Add Parentheses

    Different Ways to Add Parentheses Given a string of numbers and operators, return all possible resul ...

  9. vc++2013中使用MySQL connector/C++ 1.1.4静态链接报错

    包含头文件 #include <mysql_connection.h> #include <mysql_driver.h> #include <cppconn/state ...

  10. TCP/IP协议

    1.为什么有了IP地址还需要MAC地址? 首先,数据或者信息在网络上的传输需要两个地址:目的地址和下一跳地址.其中IP地址就是目的地址,而MAC地址则是下一跳地址.目的地址在经过路由器转发的时候是不会 ...