1. 程式人生 > >Coursera-Getting and Cleaning Data-week4-R語言中的正則表示式以及文字處理

Coursera-Getting and Cleaning Data-week4-R語言中的正則表示式以及文字處理

補上第四周筆記,以及本次課程總結。

第四周課程主要針對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"    

前三週筆記

第四周:文字查詢與正則表示式 http://www.cnblogs.com/weibaar/p/4285082.html 

相關推薦

Coursera-Getting and Cleaning Data-week4-R語言表示式以及文字處理

補上第四周筆記,以及本次課程總結。 第四周課程主要針對text進行處理。裡面包括 1.變數名的處理 2.正則表示式 3.日期處理(參見swirl lubridate包練習) 首先,變數名的處理,奉行兩個原則,1)統一大小寫tolower/toupper;2)去掉在匯入資料時,因為特殊字元導致的合併變

Coursera-Getting and Cleaning Data-Week3-dplyr+tidyr+lubridate的組合拳

Coursera-Getting and Cleaning Data-Week3 Wednesday, February 04, 2015 好久不寫筆記了,年底略忙。。 Getting and Cleaning Data第三週其實沒什麼好說的,一個quiz,一個project,加一個swirl。

Coursera-Getting and Cleaning Data-Week2-課程筆記

按照Quiz知識點來的筆記 1.API 視訊裡介紹了用httr包讀取twitter資料,在httr Demo頁有其讀取twitter, facebook, google,github等的demo程式碼。 在使用httr包前,都要到相應網站去註冊API,獲得訪問許可權,httr裡訪問資料的方式基本都是

Coursera-Getting and Cleaning Data-week1-課程筆記

課程概述 Getting and Cleaning Data是Coursera資料科學專項的第三門課,有中文翻譯。但是由於中文區討論沒有英文區熱鬧,以及資料積累,強烈建議各位同時選報中文專案和英文專案,可以互相匹配學習。 Week1的課程概括下來,主要介紹了getting and cleaning d

Go語言表達式的使用

Go語言正則表達式 Go語言正則表達式的使用 Go語言 正則表達式 許多程序語言都支持使用正則表達式對字符串進行操作,Go語言也不例外,正則表達式的語法網上很多教程,本文主要介紹在Go語言中如何使用正則表達式,通過以下實例進行說明,並添加了詳細的註釋,不會的小夥伴一看就明白了。 func ma

week4:函式之表示式

一、正則表示式 string提供的方法是完全匹配 引入正則表示式是模糊匹配,內嵌在python中,通過呼叫Re模組來實現 二、字元匹配(普通字元,元字元): 普通字元:大多數字符和字母都會和自身匹配 re.findall('alex','yuanalesalexduye') ##

go語言表示式

go語言之正則表示式 //regexp package main import ( "fmt" "regexp" ) func main() { //需要匹配的模式 //reg := regexp.MustCompile("\\w+") 正則表示式中的\需要轉義

nim語言表示式regex入門

nim語言的re模組是包裝了c語言的庫pcre. 提供了很多的proc供呼叫. 主要的 函式就是find, findBounds, findAll 1. findBounds查詢某個規則的字串. 例如:  import re let currentline =

go語言表示式

go語言正則表示式(匹配中文/匹配漢字) regexp.Compile函式的用法 package main import ( "fmt" "regexp" ) func main() { reg, err := regexp.Compile("[a-z0-9#$%&

【轉】多語言表示式,我們應該掌握

正則表示式,軟體工程中最為強大,且廣泛適用,令人信服的技術之一。從驗證電子郵件地址到執行復雜的程式碼重構器,正則表示式的用途非常廣泛,是任何軟體工程師工具箱中必不可少的條目。 什麼是正則表示式?正則表示式(或Regex,或Regexp)是使用字元序列描述複雜搜尋模式的一種方式。然而,專門的Regex語法由於

語言使用表示式

因工作需要在多語言環境下使用個性字串格式檢查 。即參考網路上程式碼,彙集如下:【VB 6】Dim re As RegExp Set re = New RegExp re.IgnoreCase = False '設定是否匹配大小寫 re.

Javascript:匹配所有“\r\n”的表示式,把換行符替換成 br

Javascript:匹配所有“\r\n”的正則表示式,把換行符替換成 var atStr="字串"; var dataAt=atStr.replace(/(\r\n)|(\n)/g,'<br&

R語言如何使用最小二乘法

一次函數 python 散點圖 博客 如何 這裏只是介紹下R語言中如何使用最小二乘法解決一次函數的線性回歸問題。 代碼如下:(數據同上一篇博客)(是不是很簡單????)> x<-c(6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1

【譯文】怎樣在R語言使用SQL命令

bow all label 數據科學 eid tex 鏈接 方法 params 【譯文】怎樣在R語言中使用SQL命令 作者 Fisseha Berhane 對於有SQL背景的R語言學習者而言。sqldf是一個很實用的包,由於它使我們能在R

R語言常用包(二)

json數據格式 預測 數據 環境 地圖 spec pdf 大氣 source 數據導入 以下R包主要用於數據導入和保存數據feather:一種快速,輕量級的文件格式。在R和python上都可使用readr:實現表格數據的快速導入。中文介紹可參考這裏readxl:讀取Mic

r語言如何進行兩組獨立樣本秩和檢驗

itl ber rep dvd see 威爾 inf r語言 true 安裝所需的包 wants <- c("coin") has <- wants %in% rownames(installed.packages()) if(any(!has)) in

r語言如何進行兩組獨立樣本秩和檢驗2

相同 使用 兩個 htm spa 類型 def 同時 自動 如果兩個數據樣本來自不同的群體並且樣本不相互影響,則它們是獨立的。使用Mann-Whitney-Wilcoxon檢驗,我們可以確定種群分布是否相同而不假設它們遵循正態分布。 例 在數據集mtcars的數據框列

R語言建立、使用資料框

《R語言實戰》筆記 —— 建立資料集之資料框 資料框是R中最常處理的資料結構,資料框不同的列可以包含不同模式(數值型、字元型等)的資料。  1. 建立資料框 mydata <- data.frame( col1, col2, col3,...)

R語言的遺傳演算法詳細解析

前言 人類總是在生活中摸索規律,把規律總結為經驗,再把經驗傳給後人,讓後人發現更多的規規律,每一次知識的傳遞都是一次進化的過程,最終會形成了人類的智慧。自然界規律,讓人類適者生存地活了下來,聰明的科學家又把生物進化的規律,總結成遺傳演算法,擴充套件到了更廣的領域中。 本文將帶你走進遺傳演算法的世界。 目

R語言表示式

R語言正則表示式 本文主要說明R語言的正則表示式,主要是一些簡單的函式和stringr包常用的方法 正則表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。 一些R自帶的正則函式 grep,主要引數為匹配規則,待匹配的字串,返回向量中匹配成功的字串的下標 s<