7 探索式資料分析| 資料科學與R語言 - Yi-Ju Tseng

文章推薦指數: 80 %
投票人數:10人

量化分析方式的測量值大多可用R的內建函數完成計算,但是在探索式分析時,常常需要遇到資料分組的分析情形(如觀察男性和女性的血壓差異、A隊與B隊的三分球命中率 ... 資料科學與R語言 1R語言101 1.1什麼是R語言 1.2函數使用 1.3變數設定 1.4執行視窗 1.5資料型態 1.5.1數值numeric 1.5.2字串character 1.5.3布林變數logic 1.5.4日期(Date) 1.6基本運算子 1.6.1數學基本運算 1.6.2邏輯運算 1.7錯誤訊息 1.8Help 2R資料結構 2.1向量vector 2.1.1快速產生向量函數 2.1.2向量運算 2.2因子factor 2.3列表list 2.3.1列表資料擷取 2.3.2列表資料編輯設定 2.4矩陣matrix 2.5資料框data.frame 2.6資料表data.table 2.7資料屬性查詢函數 3控制流程 3.1條件判斷 3.1.1if-else敘述 3.1.2if-elseif-else 4函數 4.1為什麼需要函數 4.2函數組成 4.3函數命名原則 4.4函數範例 4.5函式編程Functionalprogramming 4.6purrr 4.7map2family 4.8參考資料 5資料讀取與匯出 5.0.1純文字資料(無分隔) 5.0.2其他讀檔注意事項 5.0.3API(Applicationprogramminginterfaces) 5.0.4XML可延伸標記式語言 5.0.5網頁爬蟲Webscraping 5.1Facebook資料擷取 5.1.1GraphAPIinR 5.1.2Rfacebookpackage 5.2資料匯出 5.2.1文字檔.txt 5.2.2CSV檔.csv 5.2.3R物件.rds 6資料處理與清洗 6.1TidyData 6.2資料型別轉換處理 6.2.1資料型別檢查 6.2.2資料型別轉換 6.3文字字串處理 6.3.1基本處理 6.3.2搜尋字串 6.3.3正規表示式(RegularExpression) 6.4子集Subset 6.4.1一維資料(向量) 6.4.2二維資料 6.5排序 6.5.1sort向量排序 6.5.2order 6.6資料組合 6.7資料結合(Join) 6.8長表與寬表 6.9遺漏值處理 6.10綜合練習範例Casestudy 6.10.1載入資料 6.10.2資料總覽 6.10.3資料預覽 6.10.4資料排序後篩選 6.10.5欄位值篩選 6.10.6字串條件搜尋後篩選 7探索式資料分析 7.1什麼是探索式資料分析 7.2data.table 7.2.1i觀察值篩選邏輯 7.2.2j欄位選擇運算 7.2.3by分組依據 7.2.4參考文件與資源 7.3dplyr 7.3.1select() 7.3.2filter() 7.3.3mutate() 7.3.4summarise() 7.3.5group_by() 7.3.6arrange() 7.3.7rename() 7.3.8參考文件與資源 8資料視覺化 8.1資料視覺化的目的 8.2ggplot2簡介 8.2.1qplot() 8.2.2ggplot() 8.3ggplot2+地圖 8.3.1Choroplethmap面量圖 8.3.2ggmap() 8.4Taiwan的面量圖 8.4.1ggmap+面量圖 8.5Treemap 8.6參考文件與資源 9互動式資料呈現 9.1ggvis 9.2Plot.ly 9.3Shiny簡介 10資料探勘 10.1什麼是資料探勘 10.2Regression迴歸 10.2.1LinearRegression線性迴歸 10.2.2LogisticRegression羅吉斯迴歸 10.2.3最佳模型篩選 10.3DecisionTrees決策樹 10.4Clustering分群 10.4.1Hierarchicalclustering階層式分群 10.4.2K-meansclustering 10.5AssociationRules關聯式規則 10.6OpenSourcePackages 10.6.1Prophet 10.6.2TensorFlow 10.6.3MXNet 10.7模型驗證 10.7.1Regression迴歸驗證 10.7.2LogisticRegression邏輯迴歸驗證 10.7.3DecisionTrees決策樹驗證 10.8CaseStudy 10.9參考資料 11從小數據到大數據分析 11.1R+Hadoop 11.2RHadoop安裝測試流程(Cloudera) 11.2.1系統/軟體版本資訊 11.2.2參考資料 11.2.3安裝步驟 11.2.4測試前,先解決權限問題 11.2.5測試 11.2.6安裝RStudioServer 11.3RHadoopMapReduce:easywordcount 11.4R+Spark 12軟體安裝介紹 12.1R安裝 12.2RStudio安裝 12.3RStudio使用簡介 12.3.1專案 12.3.2RStudio介面 13教學影片資訊 13.1教學影片頻道連結 13.2完整版播放清單 13.3速成版播放清單 作者資訊 References Publishedwithbookdown 資料科學與R語言 7探索式資料分析 7.1什麼是探索式資料分析 探索式資料分析(ExploratoryDataAnalysis)的主要精神是運用視覺化、基本的統計等工具,反覆的探索資料特性,獲取資料所包含的資訊、結構和特點,因為在進行複雜或嚴謹的分析之前,必須要對資料有更多認識,才能訂定對的資料分析方向。

探索式資料分析包括分析各變數間的關聯性,看是否有預料之外的有趣發現,或是觀察資料內容是否符合預期,若否,檢查資料是否有誤,最後檢查資料是否符合分析前的假設,由上述可知,探索式資料分析通常不需要嚴謹的假設和細節呈現,主要功能還是『觀察』資料的特性。

在資料量大/雜的時候,探索式資料分析就非常重要,因為透過探索式資料分析,分析人員可以在複雜的統計計算與耗時的模型建立前,就先發現可能的錯誤,更重要的是,可以透過探索性分析來調整分析的方向,減少因分析方向錯誤所造成的時間浪費。

探索式資料分析分為: 圖形化Graphical或量化Quantitative 單變量Univariate或雙變量Bivariate或多變量Multivariate 圖形化的分析方式包括做圖與列表,量化的分析方式則是資料初步統計,本章節著重於量化的分析方式,圖形化的分析方式請參考Ch8。

以單變量分析來說,量化的分析方式可包含 計算集中趨勢(維基百科) 平均值Meanmean() 中位數Medianmedian() 眾數Mode,R無內建函數,可直接用table()找出現次數最多的資料 計算資料分散程度 最小值Minmin() 最大值Maxmax() 範圍Rangerange() 四分位差Quartilesquantile() 變異數Variancevar() 標準差Standarddeviationsd() 以雙變量分析來說,分析方式可包括: 列聯表Crosstabstable(),ftable(),prop.table() 共變數Covariancecov() 相關性Correlationcor() 量化分析方式的測量值大多可用R的內建函數完成計算,但是在探索式分析時,常常需要遇到資料分組的分析情形(如觀察男性和女性的血壓差異、A隊與B隊的三分球命中率差異、中鋒和後衛的助攻次數…等),若只用基本的內建函數計算,需要先完成資料分組或子集後,再作進一步的運算,相當耗時,為了使這類資料分組與分析的工作更容易被完成,本書在介紹探索式資料分析時會搭配介紹data.table(DowleandSrinivasan2019)和dplyr(Wickham,Francois,etal.2020)packages,這兩個packages各有優點,可依自己喜好選用。

7.2data.table data.table是data.frame資料框型別的延伸,如要使用必須安裝並載入data.table(DowleandSrinivasan2019)package install.packages("data.table")##安裝 library(data.table)##載入 使用data.table讀取大型資料的速度比使用資料框快上數倍,效能比較可參考Benchmarks:Grouping,讀取資料的函數為fread(),使用方法與一般檔案讀取方法(Ch??)類似 fread("檔案名稱") 如果已經使用其他資料來源將檔案讀成資料框data.frame格式,可以使用data.table()函數將data.frame轉為data.table格式,以先前介紹過的NBA資料為例(Ch6.10,需安裝與載入SportsAnalytics套件) library(SportsAnalytics) library(data.table) NBA151680] NBA Al-farouqAminu POR SF 82 2342 299 719 126 349 115 156 98 498 138 72 120 53 171 0 839 3 0 0 82 NBA TrevorAriza HOU SF 81 2860 357 858 185 497 126 161 67 366 188 161 113 26 177 0 1025 2 0 0 81 NBA WillBarton DEN SG 82 2355 426 984 112 324 216 268 60 477 204 71 139 39 147 0 1180 2 0 0 1 NBA AronBaynes DET PF 81 1241 194 384 0 2 126 165 140 384 51 21 67 52 151 0 514 0 0 0 1 NBA BismackBiyombo TOR PF 82 1810 156 288 0 1 142 226 182 655 29 19 71 133 225 2 454 3 0 0 22 NBA CoreyBrewer HOU SG 82 1670 212 552 61 225 105 140 42 199 109 84 78 19 168 1 590 0 0 0 12 NBA AllenCrabbe POR SF 81 2111 312 678 112 284 98 113 27 216 99 63 64 16 192 2 834 0 0 0 8 NBA EdDavis POR PF 81 1684 206 337 0 0 114 204 224 599 88 57 64 72 202 2 526 2 0 0 0 NBA GorguiDieng MIN C 82 2222 308 578 6 20 205 248 156 584 143 94 140 96 219 0 827 1 0 0 39 NBA AndreDrummond DET C 81 2664 552 1061 2 6 208 586 395 1198 67 119 154 112 245 2 1314 7 0 0 81 NBA JaredDudley WAS SG 81 2098 233 487 100 239 72 98 54 286 170 75 80 18 190 1 638 1 0 0 41 NBA MontaEllis IND PG 81 2733 436 1021 87 281 162 206 42 272 382 149 203 38 174 0 1121 1 0 0 81 NBA RandyFoye OKC SG 81 1640 168 481 75 250 61 74 24 156 160 39 86 29 131 0 472 0 0 0 8 NBA LangstoGalloway NYK PG 82 2032 231 588 77 224 86 114 43 288 207 77 61 22 177 2 625 0 0 0 7 NBA PaulGeorge IND SF 81 2828 605 1448 210 565 454 528 79 563 329 152 265 29 230 1 1874 6 0 0 81 NBA DraymondGreen GSW SF 81 2807 401 819 100 258 229 329 130 765 597 118 259 111 240 2 1131 11 0 0 81 NBA JamesHarden HOU SG 82 3121 710 1617 236 656 720 837 63 502 612 138 374 51 229 1 2376 2 0 0 82 NBA RoyHibbert LAL C 81 1881 182 411 0 2 117 145 131 398 95 32 76 110 252 3 481 2 0 0 81 NBA AlHorford ATL PF 82 2638 529 1049 88 257 103 129 148 597 263 67 107 122 163 0 1249 1 0 0 82 NBA JoeIngles UTA SF 81 1241 124 291 81 210 13 18 19 151 96 55 65 4 98 0 342 1 0 0 2 NBA JoeJohnson MIA SF 81 2703 377 859 120 313 118 142 49 292 318 61 160 4 146 0 992 1 0 0 81 NBA FrankKaminsky CHA PF 81 1713 215 525 68 202 108 148 69 336 97 37 58 43 126 0 606 0 0 0 3 NBA EnesKanter OKL C 82 1721 415 720 10 21 200 251 250 665 33 26 115 33 166 1 1040 2 0 0 1 NBA ZachLavine MIN PG 82 2295 433 960 123 316 161 203 28 229 252 69 155 17 193 1 1150 0 0 0 33 NBA RobinLopez NYK C 82 2213 357 662 0 1 128 161 268 602 114 16 133 129 182 2 842 3 0 0 82 NBA T.j.Mcconnell PHI PG 81 1609 218 464 31 89 26 41 43 250 367 95 140 10 114 0 493 0 0 0 17 NBA DougMcdermott CHI SF 81 1860 291 644 110 259 72 84 37 195 59 14 52 6 127 0 764 0 0 0 4 NBA PattyMills SAN PG 81 1659 260 612 123 320 47 58 27 158 226 59 76 6 102 0 690 0 0 0 3 NBA PaulMillsap ATL PF 81 2640 501 1067 74 232 309 408 197 733 264 148 191 140 237 2 1385 4 0 0 81 NBA ShabazzMuhammad MIN SF 82 1678 317 681 44 152 185 242 100 267 52 24 70 7 94 0 863 0 0 0 0 NBA RaulNeto UTA PG 81 1501 180 418 64 162 52 70 17 120 173 62 109 2 122 1 476 0 0 0 53 NBA MasonPlumlee POR PF 82 2087 267 517 0 4 215 335 201 628 226 68 154 82 253 4 749 1 0 0 82 NBA JuliusRandle LAL PF 81 2287 358 835 10 36 193 270 172 830 144 53 149 29 242 2 919 0 0 0 60 NBA RamonSessions WAS PG 82 1667 280 592 36 111 214 283 26 204 240 47 115 5 102 0 810 0 0 0 5 NBA JaredSullinger BOS PF 81 1917 351 807 29 104 103 161 194 673 187 75 102 47 209 2 834 2 0 0 73 NBA IsaiahThomas BOS PG 82 2647 591 1382 167 465 474 544 46 243 509 91 220 9 167 1 1823 9 0 0 79 NBA TristanThompson CLE C 82 2269 247 420 0 0 149 242 268 738 63 38 61 51 202 0 643 1 0 0 34 NBA Karl-anthoTowns MIN C 82 2621 625 1152 30 88 223 275 226 854 161 58 183 138 245 1 1503 2 0 0 82 NBA P.j.Tucker PHO SF 82 2540 239 582 68 206 106 142 165 512 177 106 111 20 202 3 652 4 0 0 80 NBA EvanTurner BOS SG 81 2270 343 753 20 83 148 179 50 397 359 80 169 28 139 0 854 2 0 0 12 NBA KembaWalker CHA PG 81 2885 568 1332 182 490 371 438 56 358 421 127 171 39 111 0 1689 5 0 0 81 NBA AndrewWiggins MIN SF 81 2844 594 1294 57 190 430 565 107 294 164 78 182 46 165 1 1675 1 0 0 81 NBA MarvinWilliams CHA PF 81 2339 338 747 152 379 120 144 127 520 110 58 62 77 133 1 948 0 0 0 81 7.2.2j欄位選擇運算 第二個參數j是用來決定輸出欄位,輸出的欄位可以是原始欄位,也可以是計算後的欄位,以計算所有球員的平均出場數為例: NBA1516DT[,mean(GamesPlayed)]##因沒有篩選需求,,前方留空 ##[1]55 也可以一次計算多個數值,如同時計算平均出場數、平均犯規次數以及平均抄截次數,此時第二個欄位j需要使用.()包起來 NBA1516DT[,.(mean(GamesPlayed),mean(PersonalFouls),mean(Steals))]##因沒有篩選需求,,前方留空 ##V1V2V3 ##1:5510541 由上述輸出可以發現輸出的數字自動被加上欄位名稱V1,V2,V3,可能會造成數據判別錯誤,所以在計算新欄位時,可以在新欄位定義的前方加上欄位名稱=,同時替欄位取名字 NBA1516DT[,.(GamesPlayedMean=mean(GamesPlayed), PersonalFoulsMean=mean(PersonalFouls), StealsMean=mean(Steals))] ##GamesPlayedMeanPersonalFoulsMeanStealsMean ##1:5510541 除了計算平均值以外,當然可以帶入其他函式做各式各樣的運算 NBA1516DT[,.(GamesPlayedMax=max(GamesPlayed),#最大值 ThreesMadeMin=min(ThreesMade),#最小值 FieldGoalsMadeSD=sd(FieldGoalsMade))]#標準差 ##GamesPlayedMaxThreesMadeMinFieldGoalsMadeSD ##1:820166 若配合第一個參數一起使用,可以計算出所有出場數大於70的球員,平均投進幾顆三分球與兩分球 NBA1516DT[GamesPlayed>70, .(ThreesMadeMean=mean(ThreesMade),FieldGoalsMadeMean=mean(FieldGoalsMade))] ##ThreesMadeMeanFieldGoalsMadeMean ##1:76335 7.2.3by分組依據 第三個參數by為分組計算的依據,舉例來說,我們可以計算NBA各隊的球員數與平均助攻數,球員個數的計算在data.table內可使用.N指令,平均使用mean()函數,此時只要在by=後方加上分組依據(各隊Team),即可完成運算 NBA1516DT[,.(.N,AssistsMean=mean(Assists)), by=Team] ##TeamNAssistsMean ##1:SAC15134 ##2:MEM2274 ##3:OKL14126 ##4:NYK16105 ##5:NOR2187 ##6:LAC15124 ##7:SAN16130 ##8:POR15116 ##9:IND15125 ##10:WAS17127 ##11:DAL15124 ##12:MIL17113 ##13:DET15105 ##14:ORL15128 ##15:HOU16101 ##16:LAL1599 ##17:DEN15122 ##18:CHI15121 ##19:GSW15158 ##20:BRO16100 ##21:CHA14118 ##22:ATL15142 ##23:TOR1697 ##24:MIN14129 ##25:PHO1797 ##26:UTA1794 ##27:MIA15131 ##28:BOS15128 ##29:PHI16118 ##30:CLE16117 ##31:OKC1160 ##TeamNAssistsMean .N在data.table內是保留字,用來計算個數 三個參數結合使用,可以輕鬆計算出NBA各隊的中鋒球員數和他們的平均三分球出手次數,指令如下: NBA1516DT[Position=="C", .(.N,ThreesAttemptedMean=mean(ThreesAttempted)), by=Team] ##TeamNThreesAttemptedMean ##1:OKL37.00 ##2:NOR40.25 ##3:LAC20.50 ##4:DET23.00 ##5:BRO310.00 ##6:LAL30.67 ##7:WAS21.00 ##8:GSW416.00 ##9:SAN334.67 ##10:HOU23.50 ##11:SAC370.67 ##12:PHO32.67 ##13:ORL24.50 ##14:MIN336.00 ##15:MEM21.50 ##16:UTA31.33 ##17:IND20.50 ##18:CHA10.00 ##19:DEN243.50 ##20:POR2116.00 ##21:CLE32.33 ##22:NYK11.00 ##23:DAL31.67 ##24:MIL20.50 ##25:CHI11.00 ##26:PHI24.00 ##27:TOR36.00 ##28:BOS2105.00 ##29:ATL10.00 ##30:MIA10.00 ##TeamNThreesAttemptedMean 7.2.4參考文件與資源 data.table還有很多好用的功能,有興趣的話可以參考下列資料 官網 指令全集Thedata.tableRpackagecheatsheet Adata.tableRtutorialbyDataCamp DataCamp互動式教學課程 7.3dplyr dplyr(Wickham,Francois,etal.2020)package是HadleyWickham開發的資料處理分析套件,如要使用必須安裝並載入dplyrpackage install.packages("dplyr")##安裝 library(dplyr)##載入 dplyr使用以下函數分析整理資料: select():選要分析的欄位,欄位子集(Column) filter():選要分析的觀察值,觀察值子集(Row) mutate():增加新欄位 summarise():計算統計值 group_by():分組依據 arrange():觀察值排序 rename():欄位重新命名 %>%:the“pipe”operator連結上數函式,將所有函式計算串在一起執行 以上述NBA資料為例,各函數功能分述如下: 首先先讀入資料 library(SportsAnalytics) NBA15162850,] filter12850) filter1 ##LeagueNameTeamPositionGamesPlayedTotalMinutesPlayed ##1NBATrevorArizaHOUSF812860 ##2NBAJamesHardenHOUSG823121 ##3NBAGordonHaywardUTASG802889 ##4NBAKyleLowryTORPG772853 ##5NBAKhrisMiddletonMILSF792855 ##6NBAMarcusMorrisDETSF802852 ##7NBAKembaWalkerCHAPG812885 ##FieldGoalsMadeFieldGoalsAttemptedThreesMadeThreesAttemptedFreeThrowsMade ##1357858185497126 ##27101617236656720 ##35211202143410393 ##45121198212546398 ##55071144143362277 ##6410945108297203 ##75681332182490371 ##FreeThrowsAttemptedOffensiveReboundsTotalReboundsAssistsStealsTurnovers ##116167366188161113 ##283763502612138374 ##34776139729695202 ##449155365494158225 ##531245301331131180 ##62719140420167140 ##743856358421127171 ##BlocksPersonalFoulsDisqualificationsTotalPointsTechnicalsEjections ##1261770102520 ##2512291237620 ##3271830157800 ##4342111163490 ##5192041143450 ##62317011131110 ##7391110168950 ##FlagrantFoulsGamesStarted ##1081 ##2082 ##3080 ##4077 ##5079 ##6080 ##7081 也可選擇隊伍名稱為“BOS”或“SAN”的球員資料 ##等同於NBA1516[NBA1516$Team%in%c("BOS","SAN"),] filter248 ##FieldGoalsMadeFieldGoalsAttemptedThreesMadeThreesAttemptedFreeThrowsMade ##15361045016259 ##2138296123762 ##3295815353 ##4456101814740696 ##549105154911 ##624220 ##FreeThrowsAttemptedOffensiveReboundsTotalReboundsAssistsStealsTurnovers ##13021756311103899 ##283252451236059 ##34327963 ##412348220158117109 ##51635624138 ##6001001 ##BlocksPersonalFoulsDisqualificationsTotalPointsTechnicalsEjections ##1811510133100 ##22997035000 ##311607600 ##4191642115500 ##52311012400 ##6000600 ##FlagrantFoulsGamesStarted ##1074 ##2011 ##302 ##4072 ##500 ##600 在filter()函式中可直接做變數計算後再篩選 ##等同於 filter30.7) filter3 ##LeagueNameTeamPositionGamesPlayedTotalMinutesPlayed ##1NBAThAntetokounmpoNYKSF37 ##2NBARakeemChristmasINDPF16 ##3NBADeandreJordanLACC772600 ##FieldGoalsMadeFieldGoalsAttemptedThreesMadeThreesAttemptedFreeThrowsMade ##134010 ##222000 ##335750701266 ##FreeThrowsAttemptedOffensiveReboundsTotalReboundsAssistsStealsTurnovers ##1001000 ##2011000 ##361926710599052107 ##BlocksPersonalFoulsDisqualificationsTotalPointsTechnicalsEjections ##1020600 ##2010400 ##31762071980100 ##FlagrantFoulsGamesStarted ##100 ##200 ##3077 也可使用&和|等符號串連邏輯 ##等同於 filter40.7&GamesPlayed>30) filter4 ##LeagueNameTeamPositionGamesPlayedTotalMinutesPlayed ##1NBADeandreJordanLACC772600 ##FieldGoalsMadeFieldGoalsAttemptedThreesMadeThreesAttemptedFreeThrowsMade ##135750701266 ##FreeThrowsAttemptedOffensiveReboundsTotalReboundsAssistsStealsTurnovers ##161926710599052107 ##BlocksPersonalFoulsDisqualificationsTotalPointsTechnicalsEjections ##11762071980100 ##FlagrantFoulsGamesStarted ##1077 7.3.3mutate() 使用mutate()增加新欄位,如需新增新欄位FieldGoalsRate,欄位值為FieldGoalsMade/FieldGoalsAttempted,指令如下 mutate12500) sum2%將指令串連,減少暫存物件(filter1)的生成,主要概念是先篩選後計算 sum32500)%>% summarise(nPlayer=n(),meanFieldGoalsMade=mean(FieldGoalsMade), meanFieldGoalsAttempted=mean(FieldGoalsAttempted)) sum3 ##nPlayermeanFieldGoalsMademeanFieldGoalsAttempted ##1405121121 7.3.5group_by() group_by()函數的功能為設定分組依據,通常會與summarise()函式Ch7.3.4合併使用,例如計算各隊(以Team作為分組依據)的球員數、平均投進的兩分球數以及平均投出的兩分球數 group1% summarise(nPlayer=n(),meanFieldGoalsMade=mean(FieldGoalsMade), meanFieldGoalsAttempted=mean(FieldGoalsAttempted)) ##`summarise()`ungroupingoutput(overridewith`.groups`argument) head(group1) ###Atibble:6x4 ##TeamnPlayermeanFieldGoalsMademeanFieldGoalsAttempted ## ##1ATL15215471. ##2BOS15209.475. ##3BRO16181.396. ##4CHA14199.451. ##5CHI15209.475. ##6CLE16200.433. 當然也可以設定多個分組依據,像是計算各隊各守備位置(以Team和Position作為分組依據)的球員數、平均投進的兩分球數以及平均投出的兩分球數 group2% summarise(nPlayer=n(),meanFieldGoalsMade=mean(FieldGoalsMade), meanFieldGoalsAttempted=mean(FieldGoalsAttempted)) ##`summarise()`regroupingoutputby'Team'(overridewith`.groups`argument) head(group2) ###Atibble:6x5 ###Groups:Team[2] ##TeamPositionnPlayermeanFieldGoalsMademeanFieldGoalsAttempted ## ##1ATLC11119 ##2ATLPF6247.516. ##3ATLPG2382.884 ##4ATLSG6161.364. ##5BOSC2196.423 ##6BOSPF4182.386. 7.3.6arrange() 排序功能,預設為遞增排序 arrange148 ##6NBAJordanAdamsMEMSG215 ##FieldGoalsMadeFieldGoalsAttemptedThreesMadeThreesAttemptedFreeThrowsMade ##101000 ##222000 ##334010 ##400000 ##524220 ##626013 ##FreeThrowsAttemptedOffensiveReboundsTotalReboundsAssistsStealsTurnovers ##1000000 ##2011000 ##3001000 ##4001010 ##5001001 ##6502332 ##BlocksPersonalFoulsDisqualificationsTotalPointsTechnicalsEjections ##1000000 ##2010400 ##3020600 ##4000000 ##5000600 ##6020700 ##FlagrantFoulsGamesStarted ##100 ##200 ##300 ##400 ##500 ##600 使用desc()將要遞減排序的變數包起來,就可以遞減排序 arrange2% summarise(nPlayer=n(),meanFieldGoalsMade=mean(FieldGoalsMade), meanFieldGoalsAttempted=mean(FieldGoalsAttempted))%>% arrange(desc(meanFieldGoalsMade)) ##`summarise()`regroupingoutputby'Team'(overridewith`.groups`argument) head(arrange3) ###Atibble:6x5 ###Groups:Team[6] ##TeamPositionnPlayermeanFieldGoalsMademeanFieldGoalsAttempted ## ##1GSWPG2504988 ##2CLESF2440864 ##3ORLSG1425969 ##4MIAC1412681 ##5OKLPG2385861 ##6ATLPG2382.884 7.3.7rename() 新名稱=舊名稱 rename1



請為這篇文章評分?