【數據獲取】文件讀取與R數據集
說在前面
R如果數據挖掘是討論怎樣加工精美的產品,那麼數據就是加工這些產品的原材料。顯然,數據是一切數據挖掘與分析活動的基石。通常來說,可信度越高、數量越大的數據,將提高更模型的訓練效果和準確度,從而得出更貼近實際且有實用價值的結論。而本篇文章就旨在討論基於R語言的各種獲取數據的辦法。
這篇文章將涉及三個關鍵點:
- 如何用R語言從本地讀取各種文件類型的數據。
- 從網上讀取數據
- R語言中自帶的各式數據集
主要內容
1. 用R語言從本地讀取數據。
第一步,是學會設置路徑。
這裡使用的函數為setwd()。比如我們如果想讀取位於桌面上的data.txt,那麼我們就要將路徑設置到桌面上,對於windows而言,即是設置到C:UsersFelixDesktop這個位置。但是需要注意的是,在R語言中,我們必須將路徑中所有的「」換成「/」,最終代碼便是:
setwd("C:/Users/Felix/Desktop")
第二步,就可以讀取各種類型的文件了。下面我們將介紹常見的各種類型文件的讀取方法:
#以下一般將數據存入名為「df」的變數,文件名一般為「dataset.x」#1.csv數據來源#使用read.csv函數,header屬性是告訴R語言是否存在表頭,如果有header,則參數為T,否則為F。#as.is是設置特殊列的數據類型,如果不設置,numeric等格式的數據會自動變為factor類型,對之後處理不利 。df <- read.csv("dataset.csv",header=T,as.is=T)#2.txt數據來源df <- read.table("dataset.txt", as.is=TRUE, header=T)#3.xls數據來源#通常最簡單的辦法,是將xls用excel打開另存為csv格式文件,然後用1中所介紹方法打開。#或者可以用gdata包library(gdata)df <- read.xls("dataset.csv",header=T)#4.R數據#保存辦法為:save(df, file="mydata.Rdata")#讀取辦法為:load("mydata.Rdata")4.spss數據來源#使用R包foreignlibrary(foreign)df <- read.spss("dataset.sav", use.value.label=TRUE, to.data.frame=TRUE)5.Stata數據來源#同樣使用R包foreignlibrary(foreign)df <- read.dta("dataset.dta")6.SAS#首先在SAS中輸入如下代碼,將其轉化為CSV格式,再用一中方法。proc export data=datasetoutfile="datast.csv"dbms=csv;run;
- 2. 直接從網上讀取數據(通過read.table或用爬蟲抓取)
#也是用read.table函數,舉個例子:data<-read.table( "http://lib.statNaNu.edu/datasets/csb/ch3a.dat")#此外還可以通過爬蟲爬區數據,一般使用的是Rcurl和XML包,非本系列重點,故不展開講
3. 使用R中自帶數據集
下面整理了R中的全部自帶數據集,來源於網路,方便讀者的自行練習數據挖掘的演算法。
這些數據集的讀取方法直接命名或使用,如volcano數據集,可以直接將其賦給df:
df <- volcano
具體數據集如下所示:
向量euro #歐元匯率,長度為11,每個元素都有命名landmasses #48個陸地的面積,每個都有命名precip #長度為70的命名向量rivers #北美141條河流長度state.abb #美國50個州的雙字母縮寫state.area #美國50個州的面積state.name #美國50個州的全稱因子state.division #美國50個州的分類,9個類別state.region #美國50個州的地理分類矩陣、數組euro.cross #11種貨幣的匯率矩陣freeny.x #每個季度影響收入四個因素的記錄state.x77 #美國50個州的八個指標USPersonalExpenditure #5個年份在5個消費方向的數據VADeaths #1940年弗吉尼亞州死亡率(每千人)volcano #某火山區的地理信息(10米×10米的網格)WorldPhones #8個區域在7個年份的電話總數iris3 #3種鳶尾花形態數據Titanic #泰坦尼克乘員統計UCBAdmissions #伯克利分校1973年院系、錄取和性別的頻數crimtab #3000個男性罪犯左手中指長度和身高關係HairEyeColor #592人頭髮顏色、眼睛顏色和性別的頻數occupationalStatus #英國男性父子職業聯繫類矩陣eurodist #歐洲12個城市的距離矩陣,只有下三角部分Harman23.cor #305個女孩八個形態指標的相關係數矩陣Harman74.cor #145個兒童24個心理指標的相關係數矩陣數據框airquality #紐約1973年5-9月每日空氣質量anscombe #四組x-y數據,雖有相似的統計量,但實際數據差別較大attenu #多個觀測站對加利福尼亞23次地震的觀測數據attitude #30個部門在七個方面的調查結果,調查結果是同一部門35個職員贊成的百分比beaver1 #一隻海狸每10分鐘的體溫數據,共114條數據beaver2 #另一隻海狸每10分鐘的體溫數據,共100條數據BOD #隨水質的提高,生化反應對氧的需求(mg/l)隨時間(天)的變化cars #1920年代汽車速度對剎車距離的影響chickwts #不同飲食種類對小雞生長速度的影響esoph #法國的一個食管癌病例對照研究faithful #一個間歇泉的爆發時間和持續時間Formaldehyde #兩種方法測定甲醛濃度時分光光度計的讀數Freeny #每季度收入和其他四因素的記錄dating from #配對的病例對照數據,用於條件logistic回歸InsectSprays #使用不同殺蟲劑時昆蟲數目iris #3種鳶尾花形態數據LifeCycleSavings #50個國家的存款率longley #強共線性的宏觀經濟數據morley #光速測量試驗數據mtcars #32輛汽車在11個指標上的數據OrchardSprays #使用拉丁方設計研究不同噴霧劑對蜜蜂的影響PlantGrowth #三種處理方式對植物產量的影響pressure #溫度和氣壓Puromycin #兩種細胞中輔因子濃度對酶促反應的影響quakes #1000次地震觀測數據(震級>4)randu #在VMS1.5中使用FORTRAN中的RANDU三個一組生成隨機數字,共400組。 #該隨機數字有問題。在VMS2.0以上版本已修復。rock #48塊石頭的形態數據sleep #兩藥物的催眠效果stackloss #化工廠將氨轉為硝酸的數據swiss #瑞士生育率和社會經濟指標ToothGrowth #VC劑量和攝入方式對豚鼠牙齒的影響trees #樹木形態指標USArrests #美國50個州的四個犯罪率指標USJudgeRatings #43名律師的12個評價指標warpbreaks #織布機異常數據women #15名女性的身高和體重列表state.center #美國50個州中心的經度和緯度類數據框ChickWeight #飲食對雞生長的影響CO2 #耐寒植物CO2攝取的差異DNase #若干次試驗中,DNase濃度和光密度的關係Indometh #某藥物的藥物動力學數據Loblolly #火炬松的高度、年齡和種源Orange #桔子樹生長數據Theoph #茶鹼葯動學數據時間序列數據airmiles #美國1937-1960年客運里程營收(實際售出機位乘以飛行哩數)AirPassengers #Box & Jenkins航空公司1949-1960年每月國際航線乘客數austres #澳大利亞1971-1994每季度人口數(以千為單位)BJsales #有關銷售的一個時間序列BJsales.lead #前一指標的先行指標(leading indicator)co2 #1959-1997年每月大氣co2濃度(ppm)discoveries #1860-1959年每年巨大發現或發明的個數ldeaths #1974-1979年英國每月支氣管炎、肺氣腫和哮喘的死亡率fdeaths #前述死亡率的女性部分mdeaths #前述死亡率的男性部分freeny.y #每季度收入JohnsonJohnson #1960-1980年每季度Johnson & Johnson股票的紅利LakeHuron #1875-1972年某一湖泊水位的記錄lh #黃體生成素水平,10分鐘測量一次lynx #1821-1934年加拿大猞猁數據nhtemp #1912-1971年每年平均溫度Nile #1871-1970尼羅河流量nottem #1920-1939每月大氣溫度presidents #1945-1974年每季度美國總統支持率UKDriverDeaths #1969-1984年每月英國司機死亡或嚴重傷害的數目sunspot.month #1749-1997每月太陽黑子數sunspot.year #1700-1988每年太陽黑子數sunspots #1749-1983每月太陽黑子數treering #歸一化的樹木年輪數據UKgas #1960-1986每月英國天然氣消耗USAccDeaths #1973-1978美國每月意外死亡人數uspop #1790–1970美國每十年一次的人口總數(百萬為單位)WWWusage #每分鐘網路連接數Seatbelts #多變數時間序列。和UKDriverDeaths時間段相同,反映更多因素。EuStockMarkets #多變數時間序列。歐洲股市四個主要指標的每個工作日記錄,共1860條記錄。
結語
更多內容請關注專欄:R語言與數據挖掘 - 知乎專欄
或者關注我的知乎賬號:溫如
推薦閱讀:
※創建你自己的模型演算法-Gradient Descent
※Learn R | 交互可視化之Plotly包(三)
※R語言流量結構分布圖——炫酷和弦圖