博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html

Thursday, January 29, 2015

补上第四周笔记,以及本次课程总结。

第四周课程主要针对text进行处理。里面包括

1.变量名的处理 2.正则表达式 3.日期处理(参见swirl lubridate包练习)

首先,变量名的处理,奉行两个原则,1)统一大小写tolower/toupper;2)去掉在导入数据时,因为特殊字符导致的合并变量 3)不要重复;4)少用代码缩写

使用的函数包括

  1. 替换查找:

gsub |在全局范围内,把A换成B gsub("A","B",data)

sub |仅替换第一个字符 sub("A","B",data)

grep |展示字符出现的位置 grep("A",data) 输出的是A在data里的位置,如果添加value=TRUE会直接返回包含A的值

grepl | 跟grep类似,但是输出逻辑判断符TRUE/FALSE,类似于a==b

  1. 字符间计算

nchar 计算data里有多少个字符,如nchar("text05"),输出6

substr 对A从第m行起取到n substr("data2014",2,4) 输出ata

paste 字符连接paste("ABC","BCD","DEF",sep="-") 输出“ABC-BCD-DEF” 如果用paste0则中间不分割

str-tim 去除头尾和空格

上述,网上搜的类似文档如文本(字符串)处理与正则表达式


正则表达式,Regular Expression,其实是除了查找内容外,R对于一些特殊字符有固定定义。如果使用好该类字符,我们可以更方便进行文本查找。

需要指出的是,正则表达式并不是R独有的,在多个语言中均有介绍。老师视频里主要介绍了他常用的几个表达。主要用于grep/gsub等函数里,查找替换使用。所有的语法都要用**\\**引用才能使用。。

网上搜到的中文应用有

1.在R中使用正则表达式 举了个读取豆瓣电影的方法做示例

  1. R正则表达式语法细节 这里讲的蛮详细的,而且还有示例,推荐阅读

  2. 55分钟练习 这个有习题,可以补充练习一下。

#要替换特殊元字符时,需要使用\\来指定。但是如果是普通字符,使用\\反而什么都得不到╮(╯▽╰)╭
gsub('\\.', "", "$Peace.Love")
## [1] "$PeaceLove"
gsub('\\$', "", "$Peace.Love")
## [1] "Peace.Love"
#\d匹配数字字符
gsub('\\d', "", "$Peace.Love0102")
## [1] "$Peace.Love"
#\D匹配非数字字符
gsub('\\D', "", "$Peace.Love2012012")
## [1] "2012012"

因为现阶段工作学习里用这种替换及文本查找的机会不多,这里就略过吧。。需要时再补好了。quiz4很简单,水水的就过掉了

总之这门Getting and Cleaning Data的课的笔记终于补完了!2月打算看Explorary Data analysis还有Reproducible Research的课。。不过中文字幕到explorary data就没了,所以以后估计要花两个月来过一门课了,看视频时间要增加 前四门课必须要感谢字幕组无私贡献!

最后附上Getting and Cleaning Data的一个实际应用,XML包读取coursera课程页面的PDF讲义,批量下载

首先,要到coursera课程页面把HTML代码全部复制到本地的一个HTML文件家里。

关键字搜索源代码,发现它的PDF文件是明文存放的,那么只要用个XML包,简单读取分段一下即可

##加载XML包,并且读取数据 

url1<-"lecture.html"
html<-htmlTreeParse(url1,useInternalNodes=T)
#在英文版本里,PDF被存在title为 "Lecture Notes"的文件里
#下列代码根据getNodeSet的示范来的。拿到有Lecture Nodes的相关list(应该与正则表达式也相关)
notes<-getNodeSet(html,"/html//a[@title='Lecture Notes']")
head(notes)
#这里使用xmlGetAttr获得相应属性
pdf<-sapply(notes,xmlGetAttr,"href")
pdf
#这里仅是示范。因为我是windows系统,mode="wb",其他系统不知道。
#只要弄个循环下载,就能把所有PDF下下来了。同时,还可以用正则表达式里提及的内容,批量提取PDF文件名
download.file(pdf[[1]],"test1.pdf",mode="wb")
> pdf
[1] "https://d396qusza40orc.cloudfront.net/getdata/lecture_slides/01_01_obtainingDataMotivation.pdf"
[2] "https://d396qusza40orc.cloudfront.net/getdata/lecture_slides/01_02_rawAndProcessedData.pdf"

前三周笔记

第一周: 从不同数据源获取数据,html & csv & xlsx  http://www.cnblogs.com/weibaar/p/4217495.html

第二周:从API以及网页获取数据 http://www.cnblogs.com/weibaar/p/4230868.html

第三周:整理数据(dplyr,tidyr,lubridate) http://www.cnblogs.com/weibaar/p/4273636.html

第四周:文本查找与正则表达式 http://www.cnblogs.com/weibaar/p/4285082.html

博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html

Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理的更多相关文章

  1. R语言中的正则表达式(转载:http://blog.csdn.net/duqi_yc/article/details/9817243)

    转载:http://blog.csdn.net/duqi_yc/article/details/9817243 目录 Table of Contents 1 正则表达式简介 2 字符数统计和字符翻译 ...

  2. R语言:用简单的文本处理方法优化我们的读书体验

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实 ...

  3. R+openNLP︱openNLP的六大可实现功能及其在R语言中的应用

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- openNLP是NLP中比较好的开源工具,R语 ...

  4. R语言中的横向数据合并merge及纵向数据合并rbind的使用

    R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...

  5. R语言中数据结构

    R语言还是有点古老感觉,数据结构没有Python中那么好用.以下简单总结一下R语言中经常使用的几个数据结构. 向量: R中的向量能够理解为一维的数组,每一个元素的mode必须同样,能够用c(x:y)进 ...

  6. R语言中的数据处理包dplyr、tidyr笔记

    R语言中的数据处理包dplyr.tidyr笔记   dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了 ...

  7. R语言学习笔记1——R语言中的基本对象

    R语言,一种自由软件编程语言与操作环境,主要用于统计分析.绘图.数据挖掘.R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发(也因此称为R),现在由“R开发核心 ...

  8. R语言中的机器学习包

    R语言中的机器学习包   Machine Learning & Statistical Learning (机器学习 & 统计学习)  网址:http://cran.r-project ...

  9. R语言中的字符处理

    R语言中的字符处理 (2011-07-10 22:29:48) 转载▼ 标签: r语言 字符处理 字符串 连接 分割 分类: R R的字符串处理能力还是很强大的,具体有base包的几个函数和strin ...

随机推荐

  1. kmeans算法实践

    这几天学习了无监督学习聚类算法Kmeans,这是聚类中非常简单的一个算法,它的算法思想与监督学习算法KNN(K近邻算法)的理论基础一样都是利用了节点之间的距离度量,不同之处在于KNN是利用了有标签的数 ...

  2. Html文档流和文档对象模型DOM理解

    前言 在理解浮动和定位时,触碰到文档流概念.为了更好理解浮动和定位,学习了文档流和DOM(文档对象模型). 正文 DOM(文档对象模型)简单理解就是编写的html页面所有内容构成的树形结构.例如: 根 ...

  3. Android(Linux)控制GPIO方法二

    前文<Android(Linux)控制GPIO的方法及实时性分析>主要使用Linux shell命令控制GPIO,该方法可在调试过程中快速确定GPIO硬件是否有问题,即对应的GPIO是否受 ...

  4. POJ2406Power Strings[KMP 失配函数]

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 45005   Accepted: 18792 D ...

  5. 第三章SQL编程

    本章目标: 1.使用变量 2.输出语句 3.数据类型转换 4.逻辑控制语句 5.批处理 一.变量 1.什么是变量呢? 变量是存储数据的容器 T-SQL中的变量分为局部变量和全局变量 2.局部变量 局部 ...

  6. protobuf简介

    #1,简介 把某种数据结构的信息,以某种格式保存起来: 主要用于数据存储,传输协议格式. #2,优点 性能好 反观XML的缺点:解析的开销惊人,不适用于事件性能敏感的场合:为了有较好的可读性,引入一些 ...

  7. 【.NET实战教程】北风网基于ASP.NET多层架构下的企业级进销存软件全程培训

    .Net进销存系统详细课程大纲(开发工具采用VS2008+sqlsever2005) [小编提醒:现在学习的话,可以使用vs2012+sql 2008 学习的是思路,教学环境不一定要一模一样]1.项目 ...

  8. 重构alert,confirm

    最近写了一个重构的alert,confirm控件,调用时直接使用alert,confirm即可 //调用方法 alert("提示语") window.confirm('你确定要删除 ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  10. C#如何防止程序多次运行的技巧

    一.使用互斥量Mutex弄懂了主要的实现思路之后,下面看代码实现就完全不是问题了,使用互斥量的实现就是第四点的思路的体现,我们用为该程序进程创建一个互斥量Mutex对象变量,当运行该程序时,该程序进程 ...