- R語言統計分析與應用
- 汪海波等
- 1403字
- 2020-05-26 17:10:52
2.3 數據的輸入
在數據分析過程中通常會面對來自多種數據源和數據格式的數據,需要將這些數據導入而進行數據分析,并匯報分析結果。R提供了適用范圍廣泛的數據導入工具。R可從鍵盤、文本文件、Microsoft Excel和Access、流行的統計軟件、特殊格式的文件,以及多種關系型數據庫中導入數據。本節將介紹各種數據源的導入方法。
2.3.1 使用鍵盤輸入數據
輸入數據最直接的方式就是使用鍵盤輸入。R中的函數edit()會自動調用一個允許手動輸入數據的文本編輯器,具體步驟如下。
(1)創建一個空數據框(或矩陣),其中變量名和變量類型需與預期中的最終數據集一致。
(2)針對這個數據對象調用文本編輯器,輸入數據,并將結果保存回此數據對象中。
如下例所示:
> newdata <-data.frame(age=numeric(0), sex=character(0), weight=numeric(0)) > newdata <-edit(newdata)
創建一個名為newdata的數據框,它含有3個變量:age(數值型)、sex(字符型)和weight(數值型)。然后調用文本編輯器,鍵入數據,最后保存結果。
在Windows上調用函數edit()的結果如圖2-2所示。

▲圖2-2 通過編輯器輸入數據
重點提示:編輯的結果需要賦值回對象本身。函數edit()事實上是在對象的一個副本上進行操作的。如果不將其賦值到一個目標,所有修改將會全部丟失。
單擊列的標題,就可以用編輯器修改變量名和變量類型(數值型、字符型)。你還可以通過單擊未使用列的標題來添加新的變量。編輯器關閉后,結果會保存到之前賦值的對象中。再次調用newdata <?edit(newdata),就能夠編輯已經輸入的數據并添加新的數據。語句newdata <?edit(newdata)的一種簡潔的等價寫法是fix(newdata)。
這種輸入數據的方式對于小數據集很有效。對于較大的數據集,這種方式的局限性就很明顯了,可以考慮從現有的文本文件、Excel電子表格、統計軟件或數據庫中導入數據。
2.3.2 數據集的導入
1.從帶分隔符的文本文件導入數據
可以使用read.table()從帶分隔符的文本文件中導入數據。此函數可讀入一個表格格式的文件并將其保存為一個數據框。其語法如下:
mydata <- read.table (file, header=TRUE, sep="delimiter", row.names="name")
其中,file是一個帶分隔符的ASCII文本文件;header是一個表明首行是否包含了變量名的邏輯值(TRUE或FALSE);sep用來指定分隔數據的分隔符;row.names是一個可選參數,用以指定一個或多個表示行標識符的變量。
如下所示:
> Example2_1 <- read.table ("example2_1.csv", header=TRUE, sep=",") > Example2_1 group atp 1 1 7.76 2 2 11.14 3 3 10.85 4 1 7.71 5 2 11.60 6 3 8.58 7 1 8.43 8 2 11.42 9 3 7.19 10 1 8.47 11 2 13.85 12 3 9.36 13 1 10.30 14 2 13.53 15 3 9.59 16 1 6.67 17 2 14.16 18 3 8.81 19 1 11.73 20 2 6.94 21 3 8.22 22 1 5.78 23 2 13.01 24 3 9.95 25 1 6.61 26 2 14.18 27 3 11.26 28 1 6.97 29 2 17.72 30 3 8.68
從當前工作目錄中讀入了一個名為example2_1.csv的逗號分隔文件,從文件的第一行取得了各變量名稱,最后將結果保存到了名為Example2_1的數據框中。
注意:參數sep允許導入那些使用逗號以外的符號來分隔行內數據的文件??梢允褂胹ep="\t"讀取以制表符分隔的文件。此參數的默認值為sep="",即表示分隔符可為一個或多個空格、制表符、換行符或回車符。
默認情況下,字符型變量將轉換為因子。但是有許多方法可以禁止這種轉換行為,其中包括設置選項stringsAsFactors=FALSE,這將停止對所有字符型變量的此種轉換。還有一種方法是使用選項colClasses為每一列指定一個類,例如logical(邏輯型)、numeric(數值型)、character(字符型)、factor(因子)。
2.導入Excel數據
讀取一個Excel文件的最好方式就是在Excel中將其導出為一個逗號分隔文件(csv),并使用前文描述的方式將其導入R中。在Windows系統中,也可以使用RODBC包來訪問Excel文件。電子表格的第一行應當包含變量/列的名稱。
首先,下載并安裝RODBC包:
> install.packages("RODBC")
然后使用以下代碼導入數據:
> library(RODBC) > Example2_2 <- odbcConnectExcel("example2_2.xls") > mydata <- sqlFetch(Example2_2, "sheet1") > odbcClose (Example2_2)
這里的example2_2.xls是一個Excel文件,sheet1是要從這個工作簿中讀取工作表的名稱,channel是一個由odbcConnectExcel()返回的RODBC連接對象,mydata是返回的數據框。
3.導入SPSS數據
SPSS數據集既可以通過foreign包中的函數read.spss()導入R中,也可以使用Hmisc包中的spss.get()函數。函數spss.get()是對函數read.spss()的一個封裝,它可以自動設置后者的許多參數,讓整個轉換過程更加簡單一致,最后得到數據分析人員所期望的結果。
首先,下載并安裝Hmisc包(foreign包已被默認安裝):
> install.packages("Hmisc")
然后使用以下代碼導入數據:
> library(Hmisc) > mydata <- spss.get("mydata.sav", use.value.labels=TRUE)
在以上代碼中,mydata.sav是要導入的SPSS數據文件,use.value.labels=TRUE讓函數將帶有值標簽的變量導入為R中水平對應相同的因子,mydata是導入后的數據框。
4.導入SAS數據
R中有幾個用來導入SAS數據集的函數,包括foreign包中的函數read.ssd()和Hmisc包中的函數sas.get()。但是,對于較新版本SAS(SAS 9.1或更高版本),這些函數并不能正常工作,因為R尚未跟進SAS對文件結構的改動。用戶可以在SAS中使用PROC EXPORT將SAS數據集保存為一個逗號分隔的文本文件,然后將帶分隔符的文本文件導入R中。
另外,Stat/Transfer軟件可以完好地將SAS數據集(包括任何已知的變量格式)保存為R數據框。
5.導入Stata數據
要將Stata數據導入R中非常簡單直接,所需代碼如下:
Library(foreign) Mydata <- read.dta("mydata.dta")
其中,mydata.dta是Stata數據集,mydata是返回的R數據框。
重點提示:進行分析之前,必須首先建立R數據集。應學會用多種方法創建R數據集,并進行瀏覽和編輯。通過本節的學習,應熟練掌握數據集的建立、保存、導入方法等。在計算機上反復操作本節的實例,可以達到熟練使用R數據集的各種編輯方法的效果。精通R數據集,對于讀者學習R可以起到事半功倍的效果。
- 自愿審計動機與質量研究:基于我國中期財務報告審計的經驗證據
- 汪博士詳解PMP?模擬題(第4版)
- 基于價值增值的治理導向型內部審計研究
- Splunk:Enterprise Operational Intelligence Delivered
- Mastering System Center Configuration Manager
- 博弈論及其在經濟管理中的應用
- SAP ABAP Advanced Cookbook
- 財務審計實務指南
- 非線性經濟關系的建模
- 行政單位經濟責任審計實務指南
- 2017年度注冊會計師全國統一考試專用教材(圖解版):審計
- 內部控制審計功能與質量
- Oracle E-Business Suite Financials R12:A Functionality Guide
- Building Dashboards with Microsoft Dynamics GP 2016(Second Edition)
- QlikView for Developers Cookbook