《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1章 數(shù)據(jù)可視化與R語言_第1頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1章 數(shù)據(jù)可視化與R語言_第2頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1章 數(shù)據(jù)可視化與R語言_第3頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1章 數(shù)據(jù)可視化與R語言_第4頁
《數(shù)據(jù)可視化分析-基于R語言》(第 4 版)課件 第1章 數(shù)據(jù)可視化與R語言_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

R語言數(shù)據(jù)可視化分析賈俊平2026/1/26基于R語言數(shù)據(jù)可視化分析賈俊平2026/1/26本書特色新穎的寫作視角嚴(yán)謹(jǐn)?shù)慕M織結(jié)構(gòu)完備的繪制代碼詳盡的圖形解讀賈俊平2026/1/261.1

數(shù)據(jù)可視化概述1.2R語言的初步使用1.3R語言的數(shù)據(jù)類型及其操作1.4R語言數(shù)據(jù)處理第1章數(shù)據(jù)可視化與R語言

展示數(shù)據(jù)或數(shù)據(jù)分析結(jié)果探索數(shù)據(jù)特征和模式從數(shù)據(jù)中提取信息讓別人理解數(shù)據(jù)或分析結(jié)果概要

本章導(dǎo)讀圖形分類可視化分析比較數(shù)值大小和差異展示數(shù)據(jù)結(jié)構(gòu)和流向展示數(shù)據(jù)分布展示變量間關(guān)系比較樣本相似性展示時間序列組合式和交互式圖形數(shù)據(jù)可視化就是把數(shù)據(jù)用圖形展示出來。它既是對數(shù)據(jù)的展示過程,也是對數(shù)據(jù)信息的再提取過程可視化分析需要清楚三個主題:數(shù)據(jù)類型、分析目的、實現(xiàn)工具數(shù)據(jù)類型決定你可以畫出什么圖形分析目的決定你需要畫出什么圖形實現(xiàn)工具決定你能夠畫出什么圖形可視化的三個主題

可視化的三個問題可視化的起源最早可追溯到17世紀(jì),當(dāng)時就開始對一些物理的基本測量結(jié)果手工繪制圖表18世紀(jì)統(tǒng)計圖形得以迅速發(fā)展,其奠基人WilliamPlayfair發(fā)明了折線圖、條形圖、餅圖等。隨著繪制手段的進(jìn)步,到19世紀(jì),統(tǒng)計圖形得到了進(jìn)一步的發(fā)展和完善,產(chǎn)生了直方圖、輪廓圖等更多的圖形,初步形成了統(tǒng)計圖表體系進(jìn)入20世紀(jì)50年代,隨著計算機(jī)技術(shù)的發(fā)展,逐步形成了計算機(jī)圖形學(xué),人們利用計算機(jī)創(chuàng)建出了首批圖形和圖表進(jìn)入21世紀(jì),可視化作為一門性對獨立的學(xué)科仍處于迅速發(fā)展和完善之中,它在生活、生產(chǎn)和科學(xué)研究的各個領(lǐng)域已得到廣泛應(yīng)用可視化及其應(yīng)用——可視化簡史1.1數(shù)據(jù)可視化概述可視化及其應(yīng)用——什么是可視化數(shù)據(jù)可視化(datavisualization)是研究數(shù)據(jù)視覺表現(xiàn)形式的方法和技術(shù),它是綜合運用計算機(jī)圖形學(xué)、圖像、人機(jī)交互等技術(shù)將數(shù)據(jù)映射為可識別的圖形、圖像、視頻或動畫,并允許用戶對數(shù)據(jù)進(jìn)行交互分析從數(shù)據(jù)分析和應(yīng)用的角度講,可視化是將數(shù)據(jù)用圖形表達(dá)出來的一種手段,它可以幫助人們更好地理解或解釋數(shù)據(jù),探索數(shù)據(jù)的特征和模式,并從數(shù)據(jù)中提取更多的信息隨著AI和數(shù)據(jù)科學(xué)的發(fā)展,可視化手段不斷進(jìn)步,數(shù)據(jù)可視化的概念和內(nèi)涵也在不斷地演進(jìn)之中,可視化的形式也從傳統(tǒng)的統(tǒng)計圖表發(fā)展成形式多樣的可視化技術(shù),應(yīng)用場景也日趨廣泛1.1數(shù)據(jù)可視化概述可視化及其應(yīng)用——可視化的應(yīng)用數(shù)據(jù)可視化的應(yīng)用的方式和形式主要取決于使用者的目的有些是用于數(shù)據(jù)觀測和跟蹤,比如,實時的股票價格指數(shù)變化圖,道路交通狀況的實時監(jiān)測等。這類可視化強(qiáng)調(diào)實時性和圖表的可讀性有些是用于數(shù)據(jù)分析和探索,比如,分析數(shù)據(jù)分布特征的圖表,分析變量間關(guān)系的圖表等。這類圖表主要強(qiáng)調(diào)數(shù)據(jù)的呈現(xiàn)或表達(dá),發(fā)現(xiàn)數(shù)據(jù)之間的潛在關(guān)聯(lián)有些是為幫助普通用戶或商業(yè)用戶快速理解數(shù)據(jù)的含義或變化,比如,商業(yè)類圖表。還有些則是用于教育或宣傳,比如出現(xiàn)在街頭、雜志上的圖表。這類圖表強(qiáng)調(diào)說服力,通常使用強(qiáng)烈的對比、置換等手段,繪制出具有沖擊力的圖像1.1數(shù)據(jù)可視化概述可視化的數(shù)據(jù)類型可視化面對的數(shù)據(jù)單純類很少單純值較少混合型經(jīng)常變量分類類別變量(定性)無序類別變量(名義值)有序類別變量(順序值)布爾變量(二值)數(shù)值變量(定量)離散變量(離散值)連續(xù)變量(連續(xù)值)時間變量(定性或定量)定性:離散值定量:連續(xù)值1.1數(shù)據(jù)可視化概述可視化的數(shù)據(jù)類型類別數(shù)據(jù)(categoricaldata)類別數(shù)據(jù)也稱分類數(shù)據(jù)或定性數(shù)據(jù)(qualitativevariable)它是類別變量(categoricalvariable)的觀測結(jié)果根據(jù)取值是否有序可分為無序類別變量和有序類別變量無序類別變量的各類別間是不可以排序的,而有序類別變量的各類別間則是有序的數(shù)值數(shù)據(jù)(metricdata)也稱定量數(shù)據(jù)(quantitativedata),它是數(shù)值變量(metricvariable)的觀測結(jié)果根據(jù)其取值的不同可以分為離散變量(discretevariable)和連續(xù)變量(continuousvariable)離散變量是只能取有限值的變量,連續(xù)變量是可以在一個或多個區(qū)間中取任何值的變量1.1數(shù)據(jù)可視化概述可視化的實現(xiàn)工具為什么用R?使用不同軟件能夠畫出的圖形是不同的,即使是同一種圖形,不同軟件有可能有不同的圖形式樣R是一種免費的統(tǒng)計計算和繪圖語言,也是一套開源的數(shù)據(jù)分析解決方案。R不僅提供了內(nèi)容豐富的數(shù)據(jù)分析方法,也具有功能強(qiáng)大的可視化功能R具有多樣性和靈活性的特點,使用者可根據(jù)需要選擇圖形并進(jìn)行修改R提供了大量的繪圖包和函數(shù),幾乎所有圖形均可以使用R函數(shù)來繪制,每個函數(shù)都有詳細(xì)幫助信息如果對圖形有特殊要求,使用者還可以自己編寫程序繪制想要的圖形Excel—表處理軟件—提供基本的分析圖形SPSS—統(tǒng)計分析軟件—提供基本分析圖形R—專業(yè)的數(shù)據(jù)分析和可視化軟件—可視功能強(qiáng)大,提供大量的圖形Python—編程語言,可視化功能不如R其他專業(yè)繪圖軟件,如tableau1.1數(shù)據(jù)可視化概述圖形的基本分類可視化分析中使用的圖形種類繁多,因可視化的目標(biāo)不同,要對圖形做出確切的分類十分困難相同的數(shù)據(jù)可繪制不同的圖形,相同的圖形可以適用于不同的數(shù)據(jù)或分析目的同一類圖形有很多變種形式,繪制方式不同,稱謂也不相同。因此,同一圖形也可以歸屬于不同的類別本書根據(jù)可視化目標(biāo)(分析目的)將圖形大致分為以下幾類(僅供參考)1.1數(shù)據(jù)可視化概述圖形的基本分類1.1數(shù)據(jù)可視化概述比較數(shù)值差異或大小的圖形適用的數(shù)據(jù)主要是各類別對應(yīng)的頻數(shù)向量或其他數(shù)值向量,其數(shù)值可以是絕對值,也可以是比例或百分比等涉及的變量可以是一個或多個。其可視化圖形可以大致分成4類條形或矩形表示數(shù)值大小,如條形圖、馬賽克圖等用圓或點表示數(shù)值大小,如圓堆圖、氣泡圖等用顏色飽和度表示數(shù)值大小,如熱圖用點或點與坐標(biāo)軸的連線、點與點的連線等表示各類別對應(yīng)的數(shù)值差異,如克利夫蘭點圖、棒棒糖圖和啞鈴圖等圖形的基本分類1.1數(shù)據(jù)可視化概述比較數(shù)值大小和差異的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)結(jié)構(gòu)和流向的圖形展示數(shù)據(jù)構(gòu)成和流向的圖形適用的數(shù)據(jù)與比較數(shù)值差異或大小的圖形相同數(shù)據(jù)結(jié)構(gòu)或構(gòu)成是指類別的部分與整體的關(guān)系,通常用部分類別的數(shù)值占全部數(shù)值的比例或百分比表示對于只涉及一個類別變量的單層結(jié)構(gòu),其可視化圖形主要有餅圖、扇形圖、環(huán)形圖、弧形圖等對于涉及兩個或兩個以上類別變量的多層結(jié)構(gòu)。其可視化圖形主要有餅環(huán)圖、旭日圖、沃羅諾伊圖等數(shù)據(jù)流向是指數(shù)據(jù)在不同類別之間的流動方向及流量大小,其可視化圖形主要有?;鶊D、和弦圖等圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)結(jié)構(gòu)和流向的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)分布的圖形數(shù)據(jù)分布主要是指數(shù)值數(shù)據(jù)分布的形狀、點的分布位置和范圍等特征其可視化圖形可以分為3類展示數(shù)據(jù)分布形狀的圖形,如直方圖、核密度圖、箱線圖、小提琴圖等展示數(shù)據(jù)在數(shù)軸上分布位置的圖形,如帶狀圖、威爾金森點圖及其變種展示數(shù)據(jù)分布范圍和分布特性的圖形,如極差圖、Q-Q圖等圖形的基本分類1.1數(shù)據(jù)可視化概述展示數(shù)據(jù)分布的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示變量間關(guān)系的圖形展示變量間關(guān)系使用的圖形取決于所分析的變量類型。對于數(shù)值變量之間關(guān)系,可以用散點圖來展示它們之間的關(guān)系如果只涉及兩個數(shù)值變量,且觀測值不是很多時,可以用普通散點圖進(jìn)行展示當(dāng)觀測值較多時,圖形中的點會出現(xiàn)重疊而難以識別,此時可以繪制分箱散點圖或密度散點圖等進(jìn)行展示如果僅分析3個變量之間的關(guān)系,則可以繪制3D散點圖或氣泡圖如果分析多個變量之間的關(guān)系,則可以用散點圖矩陣、相關(guān)系數(shù)矩陣、相關(guān)系數(shù)熱圖等進(jìn)行展示圖形的基本分類1.1數(shù)據(jù)可視化概述展示變量間關(guān)系的圖形圖形的基本分類1.1數(shù)據(jù)可視化概述比較樣本相似性的圖形如果有多個樣本的多個觀測變量,要比較各樣本的相似性或差異,其可視化圖形可以大致分為比較整體相似性的圖形,如平行坐標(biāo)圖、雷達(dá)圖等;比較樣本間差異的圖形,如星圖、臉譜圖等;對樣本進(jìn)行確切分類的圖形,如聚類圖、聚類熱圖等。圖1-5列出了比較樣本相似性的基本圖形圖形的基本分類1.1數(shù)據(jù)可視化概述展示時間序列的圖形探索時間序列變化模式和特征的基本圖形是折線圖或面積圖當(dāng)有多個變量時,可以繪制流線圖、地平線圖等要展示一個時間序列中各相鄰觀測值的變化方向,可以繪制瀑布圖要展示多個樣本在不同時間上的變化趨勢,可以繪制斜線圖要比較多個樣本在不同時間點上的排名變化,可以繪制凹凸圖如果數(shù)據(jù)是按一年中的每天記錄的,則可以繪制日歷圖展示每天的數(shù)據(jù)變化特征如果要尋找序列的變化趨勢,可以繪制平滑曲線、成分分解圖等圖形的基本分類1.1數(shù)據(jù)可視化概述展示時間序列的圖形

R和Rstudio的下載與安裝

Rstudio的下載在安裝完R后,可以進(jìn)入RStudio的官方網(wǎng)站(/products/rstudio/download/)下載RStudio。點擊Free下的Download,根據(jù)自己的計算機(jī)系統(tǒng)選擇適合的版本下載并安裝完成后,雙擊即可啟動RStudio進(jìn)入開始界面1.2R語言的初步使用對象賦值與運行對象賦值將多個數(shù)據(jù)組合成一個數(shù)據(jù)集,并給數(shù)據(jù)集起一個名稱,然后把數(shù)據(jù)集賦值給這個名稱,這就是所謂的R對象(object)。R對象可以是一個數(shù)據(jù)集、模型、圖形等任何東西R語言的標(biāo)準(zhǔn)賦值符號是“<-”,也允許使用“=”進(jìn)行賦值,但推薦使用更加標(biāo)準(zhǔn)的前者#將5個數(shù)據(jù)賦值給對象xx<-c(80,87,98,73,100)#將數(shù)據(jù)框data1_1賦值給對象yy<-data1_11.2R語言的初步使用編寫代碼腳本R代碼雖然可以在提示符后輸入,但如果輸入的代碼較多,難免出現(xiàn)輸入錯誤如果代碼輸入錯誤或書寫格式錯誤,運行后R會出現(xiàn)錯誤提示或警告信息。這時,在R中修改錯誤的代碼就比較麻煩,也不利于代碼的保存R代碼最好是在腳本文件中編寫,書寫完成后,選中輸入的代碼,并點擊鼠標(biāo)右鍵,選擇“運行當(dāng)前行或所選代碼”,即可在R中運行該代碼并得到相應(yīng)結(jié)果1.2R語言的初步使用包的安裝與加載#查看R幫助help(sum)#查看mean函數(shù)的幫助信息help(package="stats")#查看包stats的信息var#查看var函數(shù)源代碼#安裝包install.packages("ggplot2")#安裝包ggplot2install.packages(c("ggplot2","vcd"))#同時安裝兩個包#加載包library(ggplot2)#加載包ggplot2require(ggplot2)#加載包ggplot2有些R包發(fā)布在GitHub上,如果想下載GitHub上的包,需要先安裝devtools包,然后運行devtools::install_github("庫名/包名")來安裝(GitHub網(wǎng)址:/)。如果不知道庫名,可以使用githubinstall包,該包專門負(fù)責(zé)從GitHub安裝R包,只需要提供R包名稱,無需庫名。比如想安裝ggTimeSeries包,先安裝并加載githubinstall包,然后運行g(shù)ithubinstall("ggTimeSeries")即可完成安裝。有少數(shù)R包對R的版本具有依賴性,在更新或安裝最新的R版本時,建議保留使用過的R版本1.2R語言的初步使用包的安裝與加載本書使用的R包,建議在使用本書前先安裝好所需的包1.2R語言的初步使用aplotggchartsggmultiggthemesrayshaderaplpackggChernoffggpatternggTimeSeriesRColorBrewercirclizeggcirclepackggpieggtricksrempsycComplexHeatmapggcirclizeggpirateggwordcloudreshape2corhexggcorrplotggplot2gridExtrascalesDescToolsggcorrplot2ggpmiscGWalkRscatterpiedevtoolsggdistggpointdensityIDPmiscscatterplot3ddplyrggESDAggpolintrodataviztidyre1071ggExtraggpubrlattiecExtratidytextEnvStatsggfittextggrepellubridatetidyverseexportggforceggridgesnetworkD3treemapifyfactoextraggformulaggroundopenairvcdforecastggh4xggscipatchworkviridisgeomtextpathgghalvesggsideplotlywaterfallsggalluvialgghighlightggsignifplotrixwebrGGallyggHoriPlotggstatsplyrWeightedTreemapsggaltggiraphExtraggstatsplotpngwordcloud2ggbeeswarmggmagnifyggstreampsych

ggbraceggmosaicggstudentqqplotr

R的數(shù)據(jù)類型在R中分析數(shù)據(jù)或創(chuàng)建一個圖形時,首先要有分析或繪圖的數(shù)據(jù)集(dataset)R處理的數(shù)據(jù)集類型包括向量(vector)、矩陣(matrix)、數(shù)組(array)、數(shù)據(jù)框(dataframe)、因子(factor)、列表(list)等1.3R語言的數(shù)據(jù)類型及其操作向量向量——是個一維數(shù)組,其中可以是數(shù)值型數(shù)據(jù),也可以是字符數(shù)據(jù)或邏輯值(如TRUE或FALSE)要在R中錄入一個向量,需要使用c函數(shù),將不同元素組合成向量#錄入向量a<-c(2,5,8,3,9)#數(shù)值型向量b<-c("甲","乙","丙","丁")#字符型向量c<-c("TRUE","FALSE","FALSE","TRUE")#邏輯值向量a;b;c#運行向量a,b,c#訪問向量中的元素a[c(2,5)]1.3R語言的數(shù)據(jù)類型及其操作矩陣矩陣——二維數(shù)組,其中的每個元素都是相同的數(shù)據(jù)類型用matrix函數(shù)可以創(chuàng)建矩陣#用matrix函數(shù)創(chuàng)建矩陣a<-1:6#生成1到6的數(shù)值向量mat<-matrix(a,#創(chuàng)建向量a的矩陣

nrow=2,ncol=3,#矩陣行數(shù)為2,列數(shù)為3byrow=TRUE)#按行填充矩陣的元素mat#顯示矩陣mat#給矩陣添加行名和列名rownames(mat)=c("甲","乙")#添加行名colnames(mat)=c("A","B","C")#添加行名#用t函數(shù)對矩陣轉(zhuǎn)置t(mat)#矩陣轉(zhuǎn)置1.3R語言的數(shù)據(jù)類型及其操作數(shù)組數(shù)組——與矩陣類似,但維數(shù)可以大于2使用array函數(shù)可以創(chuàng)建數(shù)組#創(chuàng)建數(shù)組dim1<-c("男","女")#指定第1個維度為2個元素dim2<-c("贊成","中立","反對")#指定第2個維度為3個元素dim3<-c("東部","西部","南部","北部")#指定第3個維度為4個元素data<-round(runif(24,50,100))#生成24個均勻分布的隨機(jī)數(shù),并取整d<-array(data,c(2,3,4),dimnames=list(dim1,dim2,dim3))#創(chuàng)建數(shù)組并賦值給對象d1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——創(chuàng)建數(shù)據(jù)框數(shù)據(jù)框——一種表格結(jié)構(gòu)的數(shù)據(jù),類似于Excel中的數(shù)據(jù)表。使用data.frame函數(shù)可創(chuàng)建數(shù)據(jù)框使用data.frame函數(shù)可創(chuàng)建數(shù)據(jù)框#寫入姓名和分?jǐn)?shù)向量names<-c("劉文濤","王宇翔","田思雨","徐麗娜","丁文斌")#寫入學(xué)生姓名向量stat<-c(68,85,74,88,63)#寫入各門課程分?jǐn)?shù)向量math<-c(85,91,74,100,82)econ<-c(84,63,61,49,89)#將向量組織成數(shù)據(jù)框形式table1_1<-data.frame(學(xué)生姓名=names,統(tǒng)計學(xué)=stat,數(shù)學(xué)=math,經(jīng)濟(jì)學(xué)=econ)

#將數(shù)據(jù)組織成數(shù)據(jù)框形式,并儲存在對象table1_1中table1_1#顯示table1_1中的數(shù)據(jù)1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——數(shù)據(jù)框的查看和訪問數(shù)據(jù)框的查看只顯示數(shù)據(jù)框的前幾行或后幾行。使用head(table1_1)默認(rèn)顯示數(shù)據(jù)的前6行,如果只想顯示前3行,則可以寫成head(table1_1,3)。使用tail(table1_1)默認(rèn)顯示數(shù)據(jù)的后6行,如果想顯示后3行,則可以寫成tail(table1_1,3)使用class函數(shù)可以查看數(shù)據(jù)的類型使用nrow函數(shù)和ncol函數(shù)可以查看數(shù)據(jù)框的行數(shù)和列數(shù)使用dim函數(shù)可以同時查看數(shù)據(jù)框的行數(shù)和列數(shù)當(dāng)數(shù)據(jù)量比較大時,可以使用str函數(shù)查看數(shù)據(jù)的結(jié)構(gòu)1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——數(shù)據(jù)框的查看和訪問數(shù)據(jù)框的訪問對數(shù)據(jù)框中的特定變量進(jìn)行分析或繪圖,用“$”符號指定要分析的變量也可以用下標(biāo)指定變量所在的列或行(這樣可以避免書寫變量名)要分析指定的列時,需要將逗號放在數(shù)字的前面,要分析指定的行時,需要將逗號放在數(shù)字的后面1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——數(shù)據(jù)框的合并使用rbind函數(shù)可以將不同的數(shù)據(jù)框按行合并使用cbind函數(shù)可以將不同的數(shù)據(jù)框按列合并#數(shù)據(jù)框合并table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")table1_2<-read.csv("C:/mydata/chap01/table1_2.csv")#按行合并數(shù)據(jù)框mytable<-rbind(table1_1,table1_2)1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——排序有時需要對向量或數(shù)據(jù)框進(jìn)行排序。使用sort函數(shù)可以對向量排序,函數(shù)默認(rèn)decreasing=FALSE(默認(rèn)的參數(shù)設(shè)置可以省略不寫),即升序排序,降序時,可設(shè)置參數(shù)decreasing=TRUE如果要對整個數(shù)據(jù)框中的數(shù)據(jù)進(jìn)行排序,排序結(jié)果與數(shù)據(jù)框中的行變量對應(yīng),則可以使用base包中的order函數(shù)和sort_by函數(shù)、dplyr包中的arrange函數(shù)等排序函數(shù)arrange可以根據(jù)數(shù)據(jù)框中的某個列變量對整個數(shù)據(jù)框排序。函數(shù)默認(rèn)按升序排序,降序時,設(shè)置參數(shù)desc(變量名)即可#使用sort_by函數(shù)根據(jù)某個列變量對整個數(shù)據(jù)框排序table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")sort_by(table1_1,table1_1$姓名)#按姓名升序?qū)φ麄€數(shù)據(jù)框排序

#使用dplyr包中的arrange函數(shù)根據(jù)某個列變量對整個數(shù)據(jù)框排序library(dplyr)#加載包table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")arrange(table1_1,desc(數(shù)學(xué)))#按數(shù)學(xué)分?jǐn)?shù)降序?qū)φ麄€數(shù)據(jù)框排序1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)框——修改和匯總dplyr應(yīng)用dplyr提供了多個數(shù)據(jù)處理函數(shù),并提供了管道操作符“%>%”可以連續(xù)操作數(shù)據(jù)select函數(shù)可選擇列變量mutate可以創(chuàng)建一個新列、修改列summarise_all函數(shù)可以對多個數(shù)值列進(jìn)行匯總并返回一個新數(shù)據(jù)框summarise_if函數(shù)可以對滿足條件的列進(jìn)行匯總并返回一個新數(shù)據(jù)框summarise函數(shù)結(jié)合group_by函數(shù)可以創(chuàng)建帶有分組匯總結(jié)果的新數(shù)據(jù)框1.3R語言的數(shù)據(jù)類型及其操作因子和列表因子——類別變量在R中稱為因子(factor),因子的取值稱為水平(level)。很多分析或繪圖都可以按照因子的水平進(jìn)行分類處理使用factor函數(shù)可以將向量編碼為因子#創(chuàng)建因子v<-c("金融","地產(chǎn)","醫(yī)藥","醫(yī)藥","金融","醫(yī)藥")#創(chuàng)建向量af1<-factor(a);f1#將向量a編碼為因子#將因子轉(zhuǎn)換為數(shù)值as.numeric(f1)#將無序因子轉(zhuǎn)換為有序因子或數(shù)值b<-c("很好","好","一般","差","很差")#創(chuàng)建向量bf2<-factor(b,ordered=TRUE,levels=c("很好","好","一般","差","很差"))as.numeric(f2)#將因子轉(zhuǎn)換為數(shù)值1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)讀取和保存#讀取編碼格式為GBK的csv文件(含有標(biāo)題)

table1_1<-read.csv("C:/mydata/chap01/table1_1.csv",fileEncoding="GBK")#讀取編碼格式為UTF-8的csv文件(未運行)

read.csv("C:/mydata/chap01/table1_1.csv",fileEncoding="UTF-8")read.csv("C:/mydata/chap01/table1_1.csv")#數(shù)據(jù)編碼格式為UTF-8的csv文件#存為編碼格式為GBK的csv文件

write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv",fileEncoding="GBK")

#存為編碼格式為GBK的csv文件

#存為編碼格式為UTF-8的csv文件

write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv)#默認(rèn)編碼格式為UTF-8write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv",fileEncoding="UTF-8")

#指定編碼格式為UTF-8#注:file=""指定文件的存放路徑和名稱。存為UTF-8的csv文件,在用Excel打開時可能會顯示亂碼,建議存為GBK編碼格式。1.3R語言的數(shù)據(jù)類型及其操作數(shù)據(jù)抽樣使用sample函數(shù)可以從一個已知的數(shù)據(jù)集中抽取簡單隨機(jī)樣本函數(shù)默認(rèn)replace=FALSE,即采取無放回抽樣方式抽取樣本,設(shè)置參數(shù)replace=FALS則采取有放回抽樣方式抽取樣本,該函數(shù)也可以抽出符合特定條件的數(shù)據(jù)性別專業(yè)在讀學(xué)位網(wǎng)購金額女會計學(xué)學(xué)士382女金融學(xué)碩士171男會計學(xué)博士579男管理學(xué)學(xué)士211女會計學(xué)學(xué)士654……………………男管理學(xué)博士396女金融學(xué)博士398女金融學(xué)學(xué)士360女管理學(xué)碩士575男金融學(xué)碩士717#隨機(jī)抽取5個不同的專業(yè)組成一個樣本df<-read.csv("C:/mydata/chap01/data1_1.csv")n1<-sample(df$專業(yè),size=5);n1#無放回抽取5個不同專業(yè)n2<-sample(df$專業(yè),size=5,replace=TRUE);n2#有放回抽取5個不同專業(yè)10個網(wǎng)購金額組成一個樣本n3<-sample(df$網(wǎng)購金額,size=10);n3#無放回抽取10個網(wǎng)購金額n4<-sample(df$網(wǎng)購金額,size=10,replace=TRUE);n4#有放回抽取10個網(wǎng)購金額1.4R語言數(shù)據(jù)處理數(shù)據(jù)篩選根據(jù)需要找出符合特定條件的某類數(shù)據(jù)使用R的dplyr包中的filter函數(shù)、基礎(chǔ)包base包中的subset函數(shù)等均可以返回滿足條件的向量、矩陣或數(shù)據(jù)集的子集。使用sample函數(shù)和which函數(shù)、下標(biāo)[]方法也可以很容易進(jìn)行數(shù)據(jù)篩選#使用dplyr包中的filter函數(shù)篩選出符合特定條件的數(shù)據(jù)library(dplyr)df<-read.csv("C:/mydata/chap01/data1_1.csv")filter(df,網(wǎng)購金額>=800)#篩選網(wǎng)購金額大于等于800的所有學(xué)生filter(df,性別=="男"&網(wǎng)購金額>=700&網(wǎng)購金額<=800)#篩選出網(wǎng)購金額在700~800之間的男生filter(df,性別=="男"&專業(yè)=="金融學(xué)"&在讀學(xué)位=="博士")#篩選出金融學(xué)專業(yè)的男博士#使用subset函數(shù)篩選出符合特定條件的數(shù)據(jù)subset(df,性別=="女"&專業(yè)=="會計學(xué)"&網(wǎng)購金額>=700)#篩選出會計學(xué)專業(yè)網(wǎng)購金額大于等于700的女生subset(df,網(wǎng)購金額>600&專業(yè)=="管理學(xué)"&性別=="男")#篩選出網(wǎng)購金額大于600管理學(xué)專業(yè)的男生1.4R語言數(shù)據(jù)處理生成隨機(jī)數(shù)用R軟件產(chǎn)生隨機(jī)數(shù)十分簡單,只需在相應(yīng)分布函數(shù)的前面加上字母r即可。由于是隨機(jī)生成,每次運行會得到不同的隨機(jī)數(shù)。要想每次運行都產(chǎn)生相同的一組隨機(jī)數(shù),可在生成隨機(jī)數(shù)之前使用函數(shù)set.seed()設(shè)定隨機(jī)數(shù)種子。使用相同的隨機(jī)數(shù)種子,每次運行都會產(chǎn)生一組相同的隨機(jī)數(shù)#生成不同分布的隨機(jī)數(shù)rnorm(n=5,mean=0,sd=1)#產(chǎn)生5個標(biāo)準(zhǔn)正態(tài)分布隨機(jī)數(shù)set.seed(15)#設(shè)置隨機(jī)數(shù)種子rnorm(n=5,mean=50,sd=5)#產(chǎn)生5個均值為50、標(biāo)準(zhǔn)差為5的正態(tài)分布隨機(jī)數(shù)runif(n=5,min=0,max=10)#在0到10之間產(chǎn)生5個均勻分布隨機(jī)數(shù)rchisq(n=5,df=10)#產(chǎn)生5個自由度為10的卡方分布隨機(jī)數(shù)1.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換變量轉(zhuǎn)換成向量將一種數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為另一種數(shù)據(jù)結(jié)構(gòu)將數(shù)據(jù)框中的某個變量轉(zhuǎn)換為一個向量,也可以將幾個變量合并轉(zhuǎn)換成一個向量(注意:數(shù)據(jù)合并必須有意義)使用as.vector函數(shù)可以將變量轉(zhuǎn)換成向量#將統(tǒng)計學(xué)分?jǐn)?shù)轉(zhuǎn)化成向量v1<-as.vector(table1_1$統(tǒng)計學(xué));v1#統(tǒng)計學(xué)分?jǐn)?shù)和數(shù)學(xué)分?jǐn)?shù)合并轉(zhuǎn)換為向量v2<-as.vector(c(table1_1$統(tǒng)計學(xué),table1_1$數(shù)學(xué)));v2#將數(shù)據(jù)框轉(zhuǎn)換為向量v3<-as.vector(as.matrix(table1_1[,2:4]));v31.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)框轉(zhuǎn)換成矩陣使用as.matrix函數(shù)可以將數(shù)據(jù)框轉(zhuǎn)化成矩陣,使用as.data.frame可以將矩陣轉(zhuǎn)化成數(shù)據(jù)框#將數(shù)據(jù)框table1_1轉(zhuǎn)換為矩陣matmat<-as.matrix(table1_1[,2:4])#將table1_1中的2~4列換為矩陣matrownames(mat)=table1_1[,1]#命名矩陣的行名為table1_1第1列的名稱mat#顯示矩陣#將矩陣mat轉(zhuǎn)換成數(shù)據(jù)框,并添加上列(變量)名稱library(tidyverse)df<-as.data.frame(mat)%>%#將矩陣轉(zhuǎn)換成數(shù)據(jù)框df

rownames_to_column("姓名")#加上列名稱(姓名)1.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換短格式轉(zhuǎn)化成長格式數(shù)據(jù)框table1_1中的每一門課程占據(jù)一列,這種數(shù)據(jù)形式屬于短格式或稱寬格式使用R做數(shù)據(jù)分析或繪圖時,有時需要將“課程”和“分?jǐn)?shù)”分別放在單獨的列中,這種格式的數(shù)據(jù)就是長格式將短格式數(shù)據(jù)轉(zhuǎn)化成長格式數(shù)據(jù),可以使用reshape2包中的melt函數(shù)、tidyr包中的gather函數(shù)等。使用前需要安裝并加載reshape2包或tidyr包#使用reshape2包中的melt函數(shù)融合數(shù)據(jù)df1<-melt(table1_1,id.vars="姓名",="課程",="分?jǐn)?shù)")

#設(shè)置id變量,變量名和值名#使用tidyr包中的gather函數(shù)融合數(shù)據(jù)library(tidyr)#加載tidyr包df2<-gather(table1_1,key="課程",value="分?jǐn)?shù)","統(tǒng)計學(xué)","數(shù)學(xué)","經(jīng)濟(jì)學(xué)")#key為融合后的變量名稱#使用tidyr包中的pread函數(shù)將長格式轉(zhuǎn)換成短格式##dd<-spread(df2,key="課程",value=分?jǐn)?shù))1.4R語言數(shù)據(jù)處理數(shù)據(jù)類型的轉(zhuǎn)換將數(shù)據(jù)框轉(zhuǎn)換成HTML表格當(dāng)數(shù)據(jù)框中的樣本(行)和變量(列)都較多時,為了向別人展示數(shù)據(jù)框,可以將其轉(zhuǎn)換成HTML(HyperTextMarkupLanguage,超文本標(biāo)記語言)形式的表格R中有多個包可以生成HTML表格,如flextable包、reactable包、DT包、gt包、kableExtra包、huxtable包、rhandsontable包、pixiedust包等。它們不僅可以生成原始數(shù)據(jù)的HTML表格,還可以生成數(shù)據(jù)分析結(jié)果的表格,并可以根據(jù)需要將表格存為Word、ppt、image等不同格式的文檔。這里僅介紹rempsyc包提供的nice_table函數(shù)將數(shù)據(jù)框或數(shù)據(jù)分析的結(jié)果轉(zhuǎn)換flextable表格對象的方法library(rempsyc)library(dplyr)table1_1<-read.csv("C:/mydata/chap01/table1_1.csv")df<-table1_1%>%mutate(平均分?jǐn)?shù)=(統(tǒng)計學(xué)+數(shù)學(xué)+經(jīng)濟(jì)學(xué))/3)#添加平均分?jǐn)?shù)一列tab<-nice_table(df,width=0.3)#生成HTML表格,列寬為0.5tab1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——類別數(shù)據(jù)——一維列聯(lián)表頻數(shù)分布表(frequencydistributiontable)是對類別數(shù)據(jù)(因子的水平)計數(shù)或數(shù)值數(shù)據(jù)類別化(分組)后計數(shù)生成的表格由于類別數(shù)據(jù)本身就是一種分類,只要將所有的類別都列出來,然后計算出每一類別的頻數(shù),即可生成一張頻數(shù)分布表根據(jù)觀測變量的多少,可以生成一維列聯(lián)表、二維列聯(lián)表和多維列聯(lián)表一維列聯(lián)表——當(dāng)只涉及一個類別變量時,這個變量的各類別可以放在頻數(shù)分布表中“行”的位置,也可以放在“列”的位置,將該變量的各類別及其相應(yīng)的頻數(shù)列出來就是簡單頻數(shù)表,也稱一維列聯(lián)表(one-dimensionalcontingencytable)或簡稱一維表#生成在讀學(xué)位的一維頻數(shù)表tab1<-table(data1_1$在讀學(xué)位);tab1#生成頻數(shù)表prop.table(tab1)*100#將頻數(shù)表轉(zhuǎn)化成百分比表1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——類別數(shù)據(jù)——二維列聯(lián)表當(dāng)涉及兩個類別變量時,可以將一個變量的各類別放在“行”的位置,另一個變量的各類別放在“列”的位置(行和列可以互換),由兩個類別變量交叉分類形成的頻數(shù)分布表稱為二維列聯(lián)表(two-dimensionalcontingencytable),簡稱二維表或交叉表(crosstable)#生成性別與專業(yè)的二維列聯(lián)表data1_1<-read.csv("C:/mydata/chap01/data1_1.csv")attach(data1_1)#綁定數(shù)據(jù)框data1_1tab2<-table(性別,專業(yè));tab2#生成性別和專業(yè)的二維列聯(lián)表addmargins(tab2)#為列聯(lián)表添加邊際和addmargins(prop.table(tab2)*100)#將列聯(lián)表轉(zhuǎn)換成百分比表1.4R語言數(shù)據(jù)處理生成頻數(shù)分布表——類別數(shù)據(jù)——多維列聯(lián)表當(dāng)有兩個以上類別變量時,通常將一個或多個變量按“列”擺放,其余變量則按“行”擺放由多個類別變量生成的頻數(shù)分布表稱為多維列聯(lián)表(multidimensionalcontingencytable),簡稱多維表或高維表(higher-dimensionaltables)#使用ftable函數(shù)生成例1-2的多維列聯(lián)表data1_1<-read.csv("C:/mydata/chap01/data1_1.csv")tab3<-ftable(data1_1,row.vars=c("性別","專業(yè)"),col.vars="在讀學(xué)位")

#行變量為性別和專業(yè),列變量為在讀學(xué)位#為列

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論