補上第四周筆記,以及本次課程總結。正則表達式
第四周課程主要針對text進行處理。裏面包括express
1.變量名的處理 2.正則表達式 3.日期處理(參見swirl lubridate包練習)windows
首先,變量名的處理,奉行兩個原則,1)統一大小寫tolower/toupper;2)去掉在導入數據時,由於特殊字符致使的合併變量 3)不要重複;4)少用代碼縮寫app
使用的函數包括ide
gsub |在全局範圍內,把A換成B gsub("A","B",data)
函數
sub |僅替換第一個字符 sub("A","B",data)
學習
grep |展現字符出現的位置 grep("A",data)
輸出的是A在data裏的位置,若是添加value=TRUE
會直接返回包含A的值ui
grepl | 跟grep相似,可是輸出邏輯判斷符TRUE/FALSE,相似於a==b
url
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中使用正則表達式 舉了個讀取豆瓣電影的方法作示例
R正則表達式語法細節 這裏講的蠻詳細的,並且還有示例,推薦閱讀
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