數據清洗與收集week1

整個過程先瞄下先






2 下載文件




親身痛苦的實驗,發現在window中不需用curl方法,自己還在那實驗半天,哎哎,另外,如果還不行的話,將https改爲http可能會有效一些,https比http多了個安全協議


讀取當地文件

read.table()中一定要設置分隔符sep="",

而read,csv()中默認設置分隔符爲comma,header=true,因爲csv中是以逗號爲分隔符的




讀取excel數據




讀取XML數據



 library('XML')
 fileurl <- "http://www.w3schools.com/xml/simple.xml"  輸入url地址

doc <-xmlTreeParse(fileurl,useInternal=TRUE)       好像是讀取全部文件的意思,若不加後面那個useInternal,則會出現很多屬性

rootNode <- xmlRoot(doc)所有的結點 類似於the entire document

xmlName(rootNode) 根結點名字

names(rootNode)次結點名字








不知道htmlTreeParse與xmlTreeParse之間的區別呢


讀取json數據

讀入jsonlite包:library(jsonlite)

讀取數據:jsondata <- fromJSON("網站地址“)

查看名字:names(jsondata)

names(jsondata$owner)查看owner下的所有對象名

jsondata$owner$login查看owner下的login

myjson<- toJSON(iris,pretty=TRUE)轉換成JSON形式,若無pretty=TRUE,則看起來很難受,所有數據全在一行,有的話,會很好看

cat(myjson)附用法 ?+要查的東西,也可以查函數,如?cat

cat(…, file=”", sep=” “, append=FALSE)
Print output to the screen or to a file. Use cat to print information to an end-user from a function. cat is also useful for writing information that is being processed or generated, one or more lines at a time, to a file.

iris2 <- fromJSON(myjson)

head(iris2) 取前六個 ,與之對應的是tail()取後幾個


用data.table來讀數據

繼承了data.,frame(例子中DT即我寫的da)

所有能在data,.frame上工作的函數也能在data,,table上工作

用c 寫的所以日快

提取子集,分組和更新數據的時候表現的更更快

data table 可以像data frame一樣使用

如library(data.table)

da=data.frame(x=rnorm(9),y=rep(c("a","b","c"),each=3),z=rnorm(9))此處將data.frame改爲data.table也是一樣的

可以通過tables()來查看其內存情況

抽取行:da[2,]抽第二行      da[da$y=="a"]             da[c(2,3)]抽取第二三行

抽取列     da[,c(2,3)]在dataframe中是抽取第二和第三列,而在table中則是顯示  [1] 2  3不知何意呢,如下可見,用列的表示方法得出不是想象中這樣

以下是列的用法

此處;就是兩個expression的意思,前者爲print(10),後者爲將5賦值給k



此處當用data.frame形式來加列的話,會在內存中複製一份,再將列加上去,於是內存中有了兩份數據,對於大數據而言,很不幸的說呢

而用table形式則無此不良後果,但也會有危險,如下下張圖中所示


先寫下,再看代碼da1<-da       da[,y:=2]     :=一定要有的,結果如下


除上面那個注意點之外呢,它的強大之處在於




當然更可以這樣




更可以以更快的速度來讀取




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章