R語言之匯入資料來源(二)
4 匯入XML資料
R中有若干用於處理XML檔案的包。例如,由Duncan Temple Lang編寫的XML包允許使用者讀取、寫入和操作XML檔案。詳情參閱
5 從網頁抓取資料
在web資料抓取(Webscraping)的過程中,使用者從網際網路上提取嵌入在網頁中的資訊,並將其儲存為R中的資料結構以做進一步的分析。使用函式readLines()下載網頁,然後使用如grep()和gsup()一類的函式處理它。對於結構複雜的網頁,可以使用RCurl和XML包來提取其中想要的資訊。詳情參閱中的"Webscraping using readLines and RCurl"一文。
6 匯入SPSS資料
SPSS資料集可以通過foreign包中的函式read.spss()匯入R中,也可以使用Hmisc包中的spss.get()函式。spss.get()函式是read.spss()的一個封裝。程式碼:
7 匯入SAS資料> library(Hmisc) 載入需要的程輯包:lattice 載入需要的程輯包:survival 載入需要的程輯包:Formula 載入需要的程輯包:ggplot2 載入程輯包:‘Hmisc’ The following objects are masked from ‘package:base’: format.pval, round.POSIXt, trunc.POSIXt, units > mydataframe<-spss.get("E:/SPSS案例資料/SPSS案例資料/激素水平.sav",use.value.labels=TRUE) Warning message: In read.spss(file, use.value.labels = use.value.labels, to.data.frame = to.data.frame, : <span style="color:#ff0000;">E:/SPSS案例資料/SPSS案例資料/激素水平.sav: Unrecognized record type 7, subtype 18 encountered in system file</span> > mydataframe id group gender age weisuo changhua jisu age.cls lnjisu Rjisu cons 1 001 試驗組 男 42 中度 無 0.18 青年組 -1.7147984 33.5 1 2 002 試驗組 男 38 輕度 輕度 0.08 青年組 -2.5257286 19.0 1 3 003 試驗組 男 45 中度 中度 0.05 青年組 -2.9957323 5.5 1 4 004 試驗組 男 45 中度 輕度 0.43 青年組 -0.8439701 45.0 1 5 005 試驗組 男 43 中度 中度 0.16 青年組 -1.8325815 31.5 1 6 006 試驗組 女 44 重度 輕度 0.05 青年組 -2.9957323 5.5 1 7 007 試驗組 男 45 輕度 無 0.07 青年組 -2.6592600 17.0 1
R中設計了foreign包中的read.ssd()和Hmisc包中的sas.get()。但是,對SAS9.1或更高版本並不適用。
兩種解決方案:
(1)將SAS資料集儲存為一個逗號分隔的文字檔案(.csv)再匯入R中;
(2)Stat/Transfer(商業軟體)可將SAS資料集儲存為R資料框。
8 匯入Stata資料
程式碼如下:
> library(foreign)
> mydataframe<-read.dta("檔名(路徑)")
9 訪問資料庫管理系統R中有多種面向關係型資料庫管理系統(DBMS)的介面,包括SQL Server、Access、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata、以及SQLite。其中一些包通過原生的資料庫驅動提供訪問功能,另一些則是通過ODBC或JDBC來實現訪問的。
(1)ODBC介面
第一步:針對你的系統和資料庫型別安裝和配置合適的ODBC驅動;
第二步:在R中安裝RODBC包。
R中RODBC包中包含的函式有:
RODBC包允許R和一個通過ODBC連線的SQL資料庫之間進行雙向通訊。這意味著你不僅可以讀取資料庫中的資料到R中,同時也可以使用R修改資料庫中的內容。
要將某資料庫中的表(Crime和Punishment)分別匯入為R中的兩個名為crimedat和pundat的資料框,程式碼如下:
> install.packages("RODBC")
> library(RODBC)
> myconn<-odbcConnect("orcl",uid="mydb",pwd="123456")
> crimedat<-sqlFetch(myconn,STUDENT)
> pundat<-sqlQuery(myconn,"select * from TIANCHI")
> close(myconn)
"orcl"是資料來源名稱,"mydb"是使用者名稱,"123456"是密碼,連線字串被傳遞給sqlFetch,它將表複製到R資料框crimedat中。
10 值標籤
函式factor()可為類別型變數建立之標籤。假設有一個名為gender的變數,其中1表示男性,2表示女性。可以使用程式碼建立值標籤。
> patientdata$gender<-factor(patientdata$gender,levels=c(1,2),labels=c("male","female"))
其中levels代表變數的實際值,而labels表示包含了理想值標籤的字元型向量。