
如何用R語言從網(wǎng)上讀取多樣格式數(shù)據(jù)
生活中,我們面臨著各種各樣的數(shù)據(jù):比如你的成績(jī)單,比如公司的財(cái)務(wù)報(bào)表,比如朋友圈的一些狀態(tài),比如微信里的一段語音……我們生活的大數(shù)據(jù)時(shí)代的一個(gè)重要特征便是數(shù)據(jù)的多樣化(variety)。
也許你期待的數(shù)據(jù)是這樣的:
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species ## 1 5.1 3.5 1.4 0.2 setosa ## 2 4.9 3.0 1.4 0.2 setosa ## 3 4.7 3.2 1.3 0.2 setosa
然而事實(shí)上我們面臨的數(shù)據(jù)確實(shí)這樣的:
@HWI-EAS121:4:100:1783:550#0/1 CGTTACGAGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACGGATCTCGTATGCGGTCTGCTGCGTGACAAGACAGGGG +HWI-EAS121:4:100:1783:550#0/1 aaaaa`b_aa`aa`YaX]aZ`aZM^Z]YRa]YSG[[ZREQLHESDHNDDHNMEEDDMPENITKFLFEEDDDHEJQMEDDD @HWI-EAS121:4:100:1783:1611#0/1 GGGTGGGCATTTCCACTCGCAGTATGGGTTGCCGCACGACAGGCAGCGGTCAGCCTGCGCTTTGGCCTGGCCTTCGGAAA
還有這樣的:
{ "uid": 10438, "result": [ { "day": "2011-12-12", "followers_count": "63", //粉絲數(shù) "v_followers_count": "18", //V粉絲數(shù) "daren_followers_count": "18", //達(dá)人粉絲數(shù) "friends_count": "58", //關(guān)注數(shù) "v_friends_count": "58", //V關(guān)注數(shù) "statuses_count": "258", //微博數(shù) "bi_followers_count": "18", //互粉數(shù) "repost_count": "115", //轉(zhuǎn)發(fā)數(shù) "comments_count": "178", //評(píng)論數(shù) }, ... ] }
那么我們?nèi)绾稳ヌ幚磉@些數(shù)據(jù),我們?nèi)绾畏治鲞@些數(shù)據(jù),從數(shù)據(jù)中找到我們想要的東西呢?我們將從如何將這些數(shù)據(jù)導(dǎo)入R中開始,慢慢學(xué)習(xí)如何處理,分析我們身邊的大數(shù)據(jù)。
第一章 數(shù)據(jù)的導(dǎo)入
面對(duì)各種各樣紛雜的數(shù)據(jù),我們分析的第一步便是獲取數(shù)據(jù)并將其導(dǎo)入R中。
從網(wǎng)上獲取數(shù)據(jù)
大數(shù)據(jù)的一個(gè)重要數(shù)據(jù)源便是互聯(lián)網(wǎng)。從網(wǎng)絡(luò)上獲取數(shù)據(jù)并用來分析是非常重要的。為了得到這些數(shù)據(jù),一個(gè)普通青年的做法便是來到一個(gè)網(wǎng)站,找到數(shù)據(jù)連接,然后右鍵->目標(biāo)另存為,最后從本地文件夾中導(dǎo)入R。但是如果要下載的數(shù)據(jù)文件數(shù)目比較多,再這么做就從一個(gè)普通青年降級(jí)為了二逼青年。
為了應(yīng)對(duì)需要下載多個(gè)文件的情況,R提供了函數(shù)download.file(),使得R可以從互聯(lián)網(wǎng)上直接把數(shù)據(jù)拽下來。其調(diào)用格式為:
download.file(url, destfile, method, quiet = FALSE, mode = "w", cacheOK = TRUE, extra = getOption("download.file.extra"))
主要的參數(shù)為:
url:文件的所在地址
destfile:下載后文件的保存地址,默認(rèn)為工作目錄
method: 提供"internal", "wget", "curl" 和 "lynx"四種method,在windows上通常internal就能解決大多數(shù)的問題,少數(shù)搞不定的如Cygwin, gnuwin32這種的"wget"就可以搞定;windows的二進(jìn)制文件用“curl”,這個(gè)method對(duì)于Mac的用戶來說是都要設(shè)置的;“l(fā)ynx”主要針對(duì)historical interest。
比如說我們要獲取一系列的上市公司財(cái)務(wù)數(shù)據(jù),我們就要得到他們的資產(chǎn)負(fù)債表。當(dāng)然,如果花錢買wind數(shù)據(jù)庫,一切也就不用操心了。但是如果不在學(xué)校,用不了數(shù)據(jù)庫的話,一個(gè)可以替代的辦法就是從新浪財(cái)經(jīng)里面拽數(shù)據(jù):以安信信托(600816) 資產(chǎn)負(fù)債表為例,你可以訪問新浪財(cái)經(jīng)就能看個(gè)明白,還可以下載。我們?nèi)绻€要其他的股票,我們都可以如法炮制。那么我們通過R用download.file寫一個(gè)函數(shù)來實(shí)現(xiàn)輸入股票代碼,將資產(chǎn)負(fù)債表下載到指定目錄:
getbalancesheets=function(symbol,file){pre="http://money.finance.sina.com.cn/corp/go.php/vDOWN_BalanceSheet/displaytype/4/stockid/";end="/ctrl/all.phtml";url=paste(pre,symbol,end,sep="");destfile=paste(file,"BalanceSheet_",symbol,".xls",sep=""); download.file(url,destfile); }
值得注意的是:
凡是以http開頭的,放心大膽的使用download.file()
凡是以https開頭的,這個(gè)函數(shù)可能失效
在設(shè)置路徑時(shí)可以通過file.exists來查看文件夾是否存在,如果不存在可以使用dir.create來創(chuàng)建它,避免找不到路徑的煩惱。
使用getwd獲取當(dāng)前工作路徑,setwd可以改變它
讀入XML
XML可以說是我們非常熟悉的一類數(shù)據(jù)。我們通常在網(wǎng)上看到的電子表格便是XML文件的一部分。我們可以看到XML文件大抵是長(zhǎng)這樣的.
如何打開這樣的一個(gè)文件?其實(shí)最簡(jiǎn)單的就是用EXCEL表格打開了,我們只要在打開文件時(shí)作為 XML 列表打開文件。當(dāng)打開 XML 源時(shí),Excel 會(huì)查找 XML 樣式表 (XSL) 的標(biāo)記。XSL 說明數(shù)據(jù)的顯示方式。如果存在相應(yīng)的標(biāo)記,Excel 將會(huì)提示您選擇是否應(yīng)用樣式表。如果選擇應(yīng)用 XSL,則 XSL 將指示數(shù)據(jù)的顯示方式。
關(guān)于XML這種可擴(kuò)展性標(biāo)記語言,我們不再贅述,可以參閱wiki.這里我們關(guān)注的是在得到XML文件后如何分析處理。
R提供了XML包供我們來讀取這樣一個(gè)文件。我們將XML包的主要函數(shù)介紹如下:
xmlTreeParse(file, ignoreBlanks=TRUE, handlers=NULL, replaceEntities=FALSE, asText=FALSE, trim=TRUE, validate=FALSE, getDTD=TRUE, isURL=FALSE, asTree = FALSE, addAttributeNamespaces = FALSE, useInternalNodes = FALSE, isSchema = FALSE, fullNamespaceInfo = FALSE, encoding = character(), useDotNames = length(grep("^\\.", names(handlers))) > 0, xinclude = TRUE, addFinalizer = TRUE, error = xmlErrorCumulator(), isHTML = FALSE, options = integer(), parentFirst = FALSE) xmlRoot(x, skip = TRUE, ...) ## S3 method for class 'XMLDocumentContent' xmlRoot(x, skip = TRUE, ...) ## S3 method for class 'XMLInternalDocument' xmlRoot(x, skip = TRUE, addFinalizer = NA, ...) ## S3 method for class 'HTMLDocument' xmlRoot(x, skip = TRUE, ...)
xmlTreeParse函數(shù)主要是用于解析XML或HTML文件包含XML / HTML內(nèi)容或字符串,并生成一個(gè)R代表XML / HTML樹結(jié)構(gòu)。xmlRoot函數(shù)主要是用于提供方便地訪問由解析一個(gè)XML文檔產(chǎn)生的頂級(jí)XMLNode對(duì)象.
我們
下面就來一步一步的分析如何讀取一個(gè)XML或者HTML文件:
獲取網(wǎng)頁數(shù)據(jù)
這時(shí)你需要用到RCurl包的getURL函數(shù)來下載相關(guān)網(wǎng)頁,我們以最近BBC上最火的Robin Williams的一則新聞為例說說怎樣讀取HTML文件(因?yàn)橹形挠行┚W(wǎng)站會(huì)出現(xiàn)亂碼,為了避免不必要的麻煩,我們暫時(shí)使用英文網(wǎng)站,稍后的例子會(huì)有中文的):
library(RCurl) library(XML)url<-"http://www.bbc.com/news/entertainment-arts-28761353"SOURCE<-getURL(url,encoding="UTF-8")#Download the page## Error: transfer closed with 78288 bytes remaining to read#this is a very very long line. Let's not print it. Instead:substring (SOURCE,1,200)## Error: 找不到對(duì)象'SOURCE'PARSED<-htmlParse(SOURCE)#Format the html code d## Error: 找不到對(duì)象'SOURCE'
獲取HTML的元素
我們可以通過XPath的相關(guān)函數(shù)來獲取HTML的相關(guān)信息:
xpathSApply(PARSED,"http://h1")## Error: 找不到對(duì)象'PARSED'
這樣的標(biāo)題由于含有HTML標(biāo)記,讓我們很不爽,我們可以通過下面函數(shù)來去掉它:
xpathSApply(PARSED,"http://h1",xmlValue)## Error: 找不到對(duì)象'PARSED'
相應(yīng)的函數(shù)調(diào)用格式如下:
xpathApply(doc, path, fun, ... , namespaces = xmlNamespaceDefinitions(doc, simplify = TRUE), resolveNamespaces = TRUE, addFinalizer = NA) xpathSApply(doc, path, fun = NULL, ... , namespaces = xmlNamespaceDefinitions(doc, simplify = TRUE), resolveNamespaces = TRUE, simplify = TRUE, addFinalizer = NA)
主要參數(shù):
doc:XMLInternalDocument類型的數(shù)據(jù),htmlParse函數(shù)產(chǎn)生的對(duì)象
path:XPath 表達(dá)式,常用的有 "/" 表示根節(jié)點(diǎn)處尋找;"http://"表示文檔任意處尋找;"@"表示選擇相應(yīng)的屬性
我們可以通過抓取HTML里的關(guān)鍵詞來發(fā)現(xiàn)很多東西,比如我們想知道這個(gè)頁面有多少條鏈接,我們只需要運(yùn)行:
length(xpathSApply(PARSED, "http://a/@href"))
再比如我們想要知道新聞的日期,我們可以運(yùn)行:
xpathSApply(PARSED, "http://span[@class='date']",xmlValue)
最后要說的是,你的挖掘一定要對(duì)HTML的結(jié)構(gòu)十分的熟悉,比如頁面有哪些元素,這是第幾級(jí)的結(jié)構(gòu)等,方便在使用@時(shí)確定能找到有關(guān)屬性,比如說我想知道BBC報(bào)道了哪些最近的關(guān)于中國(guó)的新聞,我們就可以運(yùn)行以下代碼:
url="http://www.bbc.co.uk/search/news/?q=China&search_form=in-page-search-form"SOURCE<-getURL(url,encoding="UTF-8")PARSED<-htmlParse(SOURCE)targets<-unique(xpathSApply(PARSED,"http://a[@class='title linktrack-title']/@href")) head(targets)## [1] "http://www.bbc.co.uk/news/world-europe-28755656" ## [2] "http://www.bbc.co.uk/news/business-28767854"
然而,對(duì)于上面那篇文章,"http://a[@class='title linktrack-title']/@href"是找不到任何東西的。進(jìn)一步地,對(duì)于每一個(gè)鏈接,如果我們還想知道標(biāo)題與日期,我們可以使用sapply函數(shù):
bbcScraper2<-function(url){title=date=NA#Return empty values in case field not foundSOURCE<-getURL(url,encoding="UTF-8")PARSED<-htmlParse(SOURCE)title=(xpathSApply(PARSED,"http://h1[@class='story-header']",xmlValue))date=(xpathSApply(PARSED,"http://meta[@name='OriginalPublicationDate']/@content"))if(is.null(date)){date=(xpathSApply(PARSED,"http://span[@class='date']",xmlValue)) }return(c(title,as.character(date))) }targets<-as.data.frame(targets) t(sapply(targets[1:5,],bbcScraper2))## [,1] ## [1,] "Pope Francis faces greatest challenge yet in Asia" ## [2,] "Alibaba sells off loan business ahead of share sale" ## [3,] "Conservatives misguided after Ferguson shooting" ## [4,] "Q&A: Edinburgh's giant pandas" ## [5,] "In pictures: Framing Hope" ## [,2] ## [1,] "2014/08/13 01:51:58" ## [2,] "2014/08/13 01:18:39" ## [3,] "2014/08/12 17:05:25" ## [4,] "2014/08/12 16:00:21" ## [5,] "2014/08/12 14:55:21"
讀取網(wǎng)頁表格
很多網(wǎng)站并不提供直接的數(shù)據(jù)下載,而是提供一個(gè)網(wǎng)頁表格供你在線觀看。那么我們有沒有簡(jiǎn)單一點(diǎn)的辦法把他們拽下來呢?readHTMLTable函數(shù)可以幫我們把東西輕而易舉的辦到,我們先來看看函數(shù)的調(diào)用格式:
readHTMLTable(doc, header = NA, colClasses = NULL, skip.rows = integer(), trim = TRUE, elFun = xmlValue, as.data.frame = TRUE, which = integer(), ...)
我們以保利地產(chǎn)的分紅情況為例來說明函數(shù)的使用:
url<-"http://money.finance.sina.com.cn/corp/go.php/vISSUE_ShareBonus/stockid/600048.phtml"data<-readHTMLTable(url,header=NA,which=19)data## V1 V2 V3 V4 V5 V6 V7 V8 V9 ## 1 2014-05-16 0 5 2.94 瀹炴柦 2014-05-22 2014-05-21 -- 鏌ョ湅 ## 2 2013-05-28 0 0 2.32 瀹炴柦 2013-06-03 2013-05-31 -- 鏌ョ湅 ## 3 2012-06-12 0 2 2.15 瀹炴柦 2012-06-18 2012-06-15 -- 鏌ョ湅 ## 4 2011-05-11 0 3 2.13 瀹炴柦 2011-05-17 2011-05-16 -- 鏌ョ湅
對(duì)于中文來說,出現(xiàn)了亂碼,這是我們不希望看到的,一個(gè)簡(jiǎn)單地辦法就是將文件寫入一個(gè)txt文件,再重新讀取出來,即:
write.table(data,"F:/table.txt") read.table("F:/table.txt",encoding="UTF-8")## V1 V2 V3 V4 V5 V6 V7 V8 V9 ## 1 2014-05-16 0 5 2.94 實(shí)施 2014-05-22 2014-05-21 -- 查看 ## 2 2013-05-28 0 0 2.32 實(shí)施 2013-06-03 2013-05-31 -- 查看 ## 3 2012-06-12 0 2 2.15 實(shí)施 2012-06-18 2012-06-15 -- 查看 ## 4 2011-05-11 0 3 2.13 實(shí)施 2011-05-17 2011-05-16 -- 查看
看表格很完整的展現(xiàn)在我們面前了。
雖然中國(guó)足球沒什么看點(diǎn),但是還是有一些槽點(diǎn),對(duì)于買彩票的如果沒有假球的話還有一些競(jìng)猜的價(jià)值。我們想要推斷首先就得從網(wǎng)上獲取相應(yīng)數(shù)據(jù),我們還是用簡(jiǎn)單的readHTMLTable函數(shù)從網(wǎng)易載入中超賽程數(shù)據(jù):
library(XML)CslData<-readHTMLTable("http://cs.sports.163.com/fixture/",header=T)CslPoint<-CslData[[31]]CslData[[31]]<-NULLCslFixture<-do.call(rbind, lapply(CslData,function(x) subset(x[,3:5]))) colnames(CslFixture)<-iconv(colnames(CslFixture),"UTF-8") colnames(CslPoint)<-iconv(colnames(CslPoint),"UTF-8") head(CslFixture)## 主隊(duì) 比分 客隊(duì) ## NULL.1 山東魯能 1 - 0 哈爾濱毅騰 ## NULL.2 廣州恒大 3 - 0 河南建業(yè) ## NULL.3 北京國(guó)安 1 - 0 長(zhǎng)春亞泰 ## NULL.4 江蘇舜天 0 - 0 貴州茅臺(tái) ## NULL.5 杭州綠城 1 - 1 大連阿爾濱 ## NULL.6 遼寧宏運(yùn) 1 - 1 上海上港head(CslPoint)## 名次 球隊(duì) 比賽 積分 ## 1 1 廣州恒大 20 45 ## 2 2 北京國(guó)安 19 41 ## 3 3 廣州富力 19 34
這樣我們就得到了中超的數(shù)據(jù),之后就可以利用我們之前在博客里講的MCMC,logistic,SVM之類的辦法去預(yù)測(cè)了。
這個(gè)例子節(jié)選自虎撲體育的《恒大奪冠100%,卓爾降級(jí)99%——用R語言輕松模擬中超剩余比賽》,那篇帖子也給了一個(gè)簡(jiǎn)單地預(yù)測(cè)辦法,雖然不見得準(zhǔn)確,也可以為我們的預(yù)測(cè)提供一個(gè)思路。
在比價(jià)的過程中,我們首要的任務(wù)就是從網(wǎng)上獲取價(jià)格數(shù)據(jù)。我們?cè)撊绾螐漠?dāng)當(dāng)?shù)膱D書頁面獲取價(jià)格數(shù)據(jù)呢?
library(XML) library(RCurl)book_price=NULLfor(iin1:2){url_i<-paste0("http://category.dangdang.com/pg",i,"-cp01.00.00.00.00.00.html",sep="")url_i<-htmlParse(url_i,encoding="GBK")#asText=TRUE,node_i<-getNodeSet(url_i,"http://li[@class]/div[@class=\"inner\"]/a")Attr_i<-sapply(node_i,xmlGetAttr,name="href")for(jinAttr_i){url_j=htmlParse(j,encoding="GBK")node_title=getNodeSet(url_j,"http://div[@class]/img[@id]")if(length(node_title)>0){title=xmlGetAttr(node_title[[1]],"alt")title=iconv(title,"UTF-8","gbk") }else{next}node_price=getNodeSet(url_j,"http://span[@id=\"salePriceTag\"]")if(length(node_price)>0){price=as.numeric(xmlValue(node_price[[1]])) }else{next}book_price=rbind(book_price,cbind(j,title,price)) } } colnames(book_price)=c("URL","書名","價(jià)格") write.csv(book_price,"F:/book_price.csv")
json數(shù)據(jù)的一個(gè)典型的代表就是微博數(shù)據(jù),然而除了微博外也有很多其他的網(wǎng)站因?yàn)閖son采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣使JSON成為理想的數(shù)據(jù)交換語言被許多的API使用。比如github的數(shù)據(jù),Wikipedia article traffic statistics的數(shù)據(jù)也采用了json格式。
我們以github的API數(shù)據(jù)為例,下面是我的github的代碼倉庫部分?jǐn)?shù)據(jù)的json格式信息,完整版本在這里
{ "id": 20472818, "name": "courses", "full_name": "yujunbeta/courses", "owner": { "login": "yujunbeta", "id": 7315956, "avatar_url": "https://avatars.githubusercontent.com/u/7315956?v=2", "gravatar_id": "e8569ebac320c9aed1764a7d693e5a87", "url": "https://api.github.com/users/yujunbeta", "html_url": "https://github.com/yujunbeta", "followers_url": "https://api.github.com/users/yujunbeta/followers", "following_url": "https://api.github.com/users/yujunbeta/following{/other_user}", "gists_url": "https://api.github.com/users/yujunbeta/gists{/gist_id}", "starred_url": "https://api.github.com/users/yujunbeta/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/yujunbeta/subscriptions", "organizations_url": "https://api.github.com/users/yujunbeta/orgs", "repos_url": "https://api.github.com/users/yujunbeta/repos", "events_url": "https://api.github.com/users/yujunbeta/events{/privacy}", "received_events_url": "https://api.github.com/users/yujunbeta/received_events", "type": "User", "site_admin": false }, "private": false, "html_url": "https://github.com/yujunbeta/courses", "description": "Course materials for the Data Science Specialization: https://www.coursera.org/specialization/jhudatascience/1", "fork": true, "url": "https://api.github.com/repos/yujunbeta/courses", "forks_url": "https://api.github.com/repos/yujunbeta/courses/forks", "keys_url": "https://api.github.com/repos/yujunbeta/courses/keys{/key_id}",
R的jsonlite包提供了函數(shù)fromJSON來讀取JSON數(shù)據(jù)。以我的github的JSON數(shù)據(jù)為例:
library(jsonlite)jsonData<-fromJSON("https://api.github.com/users/yujunbeta/repos")
我們可以通過操作jsonData來獲取我的github的相應(yīng)信息:
names(jsonData)#獲取JSON數(shù)據(jù)的一級(jí)結(jié)構(gòu),類似于hush表的關(guān)鍵字## [1] "id" "name" "full_name" ## [4] "owner" "private" "html_url" ## [7] "description" "fork" "url" ## [10] "forks_url" "keys_url" "collaborators_url" ## [13] "teams_url" "hooks_url" "issue_events_url" ## [16] "events_url" "assignees_url" "branches_url" names(jsonData$owner)#獲取所有者的基本信息## [1] "login" "id" "avatar_url" ## [4] "gravatar_id" "url" "html_url" ## [7] "followers_url" "following_url" "gists_url" jsonData$owner$login#獲取登陸信息## [1] "yujunbeta" "yujunbeta" "yujunbeta" "yujunbeta" "yujunbeta" ## [6] "yujunbeta" "yujunbeta" "yujunbeta" "yujunbeta" "yujunbeta" ## [11] "yujunbeta" "yujunbeta" "yujunbeta" "yujunbeta" "yujunbeta" ## [16] "yujunbeta" "yujunbeta" "yujunbeta"
在股票交易中我們經(jīng)常會(huì)聽到“概念股”這樣一個(gè)名詞,那么什么樣的概念最可能走紅,什么樣的概念股最有可能獲得多數(shù)股民的購買呢,當(dāng)然就是被議論的最多的,人們最關(guān)心的,比如習(xí)大大上臺(tái)時(shí)提的“美麗中國(guó)”在當(dāng)時(shí)很是紅火,現(xiàn)在最近新聞里提及的“金融改革”估計(jì)也會(huì)成為新的股市寵兒。
我們這里使用Wikipedia article traffic statistics提供的數(shù)據(jù)來看看最近人們對(duì)某一概念的關(guān)注程度如何。當(dāng)然,要獲得人們關(guān)注什么,什么概念在股市中最紅火,靠wiki的搜索指數(shù)是遠(yuǎn)遠(yuǎn)不夠的,用下面的程序賺錢還是夠嗆。
我們這里以最近比較紅火的數(shù)據(jù)科學(xué)這一概念為例,我們來看看人們對(duì)它的關(guān)注程度:
url<-"http://stats.grok.se/json/en/latest90/data%20science"raw.data<-readLines(url,warn="F") library(rjson)rd<-fromJSON(raw.data)rd.views<-rd$daily_viewsrd.views<-unlist(rd.views)df<-as.data.frame(rd.views) head(df)## rd.views ## 2014-06-30 620 ## 2014-06-21 355 ## 2014-06-20 474library(ggplot2)df$date<-as.Date(rownames(df)) colnames(df)<-c("views","date") ggplot(df, aes(date,views))+geom_line()+geom_smooth()+theme_bw(base_size=20)
從圖中我們可以看到data science最近真的是紅火的不行,然而我們?cè)賮砜纯聪嚓P(guān)的statistic被人們關(guān)注的程度如何?
## rd.views
## 2014-06-30 288
## 2014-06-21 212
## 2014-06-20 233
顯然statistic被人關(guān)注的程度真是少的可憐。類似的我們還可以看看big data,machine learning,statistical learning這些相近的詞匯的關(guān)注度,這里我們不在贅述。
曾經(jīng)見過網(wǎng)上一個(gè)有意思的評(píng)論:我們可以通過統(tǒng)計(jì)觀看《小時(shí)代》的人數(shù)來統(tǒng)計(jì)究竟有多少腦殘。當(dāng)然,這只是一家之言。但是我們?nèi)匀豢梢岳?a href='/map/guanlianguize/' style='color:#000;font-size:inherit;'>關(guān)聯(lián)規(guī)則的思想:如果”小時(shí)代“的狀態(tài)里出現(xiàn)”腦殘“的概率很高,那么就基本上可以相信那條評(píng)論很有道理。
為了避免一些不必要的爭(zhēng)端,我們不妨利用微博數(shù)據(jù)來看看國(guó)民岳父的《后會(huì)無期》究竟與什么相關(guān),觀影人數(shù)又能代表什么?
這里我們利用lijian大神的Rweibo包來看看:
require(Rweibo)res<-web.search.content("后會(huì)無期",page=20,sleepmean=10,sleepsd=1)$Weiborequire(Rwordseg) insertWords("后會(huì)無期")n<-length(res)res<-res[res!=""]words<-unlist(lapply(X=res,FUN=segmentCN))word<-lapply(X=words,FUN=strsplit,"")wordfreq<-table(unlist(word))wordfreq<-sort(wordfreq,decreasing=TRUE)
現(xiàn)在我們來看看去掉一些單字詞匯(如“你”,“是”之類)后的詞匯頻率超過20的大概有:
TFBOYS 房間 今天 電影 偶像 手記 臺(tái)灣 后會(huì)無期 遙控 大家 年輕 64 39 33 32 32 32 32 28 26 24 24
從著些關(guān)聯(lián)詞匯來看,國(guó)民岳父的《后會(huì)無期》正在被最近風(fēng)頭正勁的TFBOYS演唱的《后會(huì)無期》取代,TFBOYS的《后會(huì)無期》成了新的熱門。不過畢竟后會(huì)無期已經(jīng)上演了那么長(zhǎng)的時(shí)間,沒有人會(huì)去溫習(xí)那些經(jīng)典的“道理”,因?yàn)榇蠹叶贾溃簾o論你知道多少道理,仍有可能過不好這一生。那么目前跟電影《后會(huì)無期》相關(guān)的東西可以肯定的就只有”電影“本身以及電影9月的”臺(tái)灣“之行。
我們不僅可以讀入JSON數(shù)據(jù)也可以通過函數(shù)toJSON將數(shù)據(jù)框?qū)憺镴SON格式,例如將鳶尾花數(shù)據(jù)集寫為JSON格式(輸出結(jié)果較長(zhǎng),在此從略):
data(iris) toJSON(iris, pretty=TRUE)
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03