99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀關(guān)于R從不同數(shù)據(jù)源導(dǎo)入數(shù)據(jù)的幾種方式總結(jié)
關(guān)于R從不同數(shù)據(jù)源導(dǎo)入數(shù)據(jù)的幾種方式總結(jié)
2018-01-13
收藏

       關(guān)于R從不同數(shù)據(jù)源導(dǎo)入數(shù)據(jù)的幾種方式總結(jié)

1  使用鍵盤(pán)輸入數(shù)據(jù)

(1) 創(chuàng)建一個(gè)空數(shù)據(jù)框(或矩陣),其中變量名和變量的模式需與理想中的最終數(shù)據(jù)集一致;

(2)針對(duì)這個(gè)數(shù)據(jù)對(duì)象調(diào)用文本編輯器,輸入你的數(shù)據(jù),并將結(jié)果保存回此數(shù)據(jù)對(duì)象中。

在下例中,你將創(chuàng)建一個(gè)名為mydata的數(shù)據(jù)框,它含有三個(gè)變量:age(數(shù)值型)、gender(字符型)和weight(數(shù)值型)。然后你將調(diào)用文本編輯器,鍵入數(shù)據(jù),最后保存結(jié)果。

>mydata<-data.frame(age=numeric(0),gender=character(0),weight=numeric(0))

>mydata<-edit(mydata)

2 從帶分隔符的文本文件中導(dǎo)入數(shù)據(jù)

你可以使用read.table()從帶分隔符的文本文件中導(dǎo)入數(shù)據(jù)。此函數(shù)可讀入一個(gè)表格格式

的文件并將其保存為一個(gè)數(shù)據(jù)框。其語(yǔ)法如下:

mydataframe<-read.table(file.header=logical_value,sep="delimiter",row,names="name")

其中,file是一個(gè)帶分隔符的ASCII文本文件,header是一個(gè)表明首行是否包含了變量名的邏輯值(TRUE或FALSE),sep用來(lái)指定分隔數(shù)據(jù)的分隔符,row.names是一個(gè)可選參數(shù),用以指定一個(gè)或多個(gè)表示行標(biāo)識(shí)符的變量。

請(qǐng)注意,參數(shù)sep允許你導(dǎo)入那些使用逗號(hào)以外的符號(hào)來(lái)分隔行內(nèi)數(shù)據(jù)的文件。你可以使用

sep="\t"讀取以制表符分隔的文件。此參數(shù)的默認(rèn)值為sep="",即表示分隔符可為一個(gè)或多個(gè)空格、制表符、換行符或回車符.

默認(rèn)情況下,字符型變量將轉(zhuǎn)換為因子。我們并不總是希望程序這樣做(例如處理一個(gè)含有被調(diào)查者評(píng)論的變量時(shí))。有許多方法可以禁止這種轉(zhuǎn)換行為。其中包括設(shè)置選項(xiàng)stringsAsFactors=FALSE,這將停止對(duì)所有字符型變量的此種轉(zhuǎn)換。另一種方法是使用選項(xiàng)

colClasses為每一列指定一個(gè)類,例如logical(邏輯型)、numeric(數(shù)值型)、character

(字符型)、factor(因子)。

函數(shù)read.table()還擁有許多微調(diào)數(shù)據(jù)導(dǎo)入方式的追加選項(xiàng)。

3 導(dǎo)入  Excle數(shù)據(jù)

讀取一個(gè)Excel文件的最好方式,就是在Excel中將其導(dǎo)出為一個(gè)逗號(hào)分隔文件(csv),并使用前文描述的方式將其導(dǎo)入R中。在Windows系統(tǒng)中,你也可以使用RODBC包來(lái)訪問(wèn)Excel文件。

電子表格的第一行應(yīng)當(dāng)包含變量/列的名稱。

首先,下載并安裝RODBC包。

你可以使用以下代碼導(dǎo)入數(shù)據(jù):

>install.packages("RODBC")

library(RODBC)

channel<-odbcConnectExcel("myfile.xls")

mydataframe<-sqlFetch(hannel,"mysheet")

odbcClose(channel)

這里的myfile.xls是一個(gè)Excel文件,mysheet是要從這個(gè)工作簿中讀取工作表的名稱,

channel是一個(gè)由odbcConnectExcel()返回的RODBC連接對(duì)象,mydataframe是返回的數(shù)據(jù)框

注意:Excel2007使用了一種名為XLSX的文件格式,實(shí)質(zhì)上是多個(gè)XML文件組成的壓縮包。xlsx包可以用來(lái)讀取這種格式的電子表格。在第一次使用此包之前請(qǐng)務(wù)必先下載并安裝好。包中的函數(shù)read.xlsx()可將XLSX文件中的工作表導(dǎo)入為一個(gè)數(shù)據(jù)框。其最簡(jiǎn)單的調(diào)用格式是read.xlsx(file,n),其中file是Excel2007工作簿的所在路徑,n則為要導(dǎo)入的工作表序號(hào)。

library(xlsx)

workbook<-"c:/mywoehbook.xlsx"

mydataframe<-read.xlsx(workbook,1)

從位于C盤(pán)根目錄的工作簿myworkbook.xlsx中導(dǎo)入了第一個(gè)工作表.

4從網(wǎng)頁(yè)抓取數(shù)據(jù)

在Web數(shù)據(jù)抓?。╓ebscraping)的過(guò)程中,用戶從互聯(lián)網(wǎng)上提取嵌入在網(wǎng)頁(yè)中的信息,并將其保存為R中的數(shù)據(jù)結(jié)構(gòu)以做進(jìn)一步的分析。完成這個(gè)任務(wù)的一種途徑是使用函數(shù)readLines()下載網(wǎng)頁(yè),然后使用如grep()和gsub()一類的函數(shù)處理它。對(duì)于結(jié)構(gòu)復(fù)雜的網(wǎng)頁(yè),可以使用RCurl包和XML包來(lái)提取其中想要的信息。

5 導(dǎo)入SPSS數(shù)據(jù)

SPSS數(shù)據(jù)集可以通過(guò)foreign包中的函數(shù)read.spss()導(dǎo)入到R中,也可以使用Hmisc包中的spss.get()函數(shù)。函數(shù)spss.get()是對(duì)read. spss()的一個(gè)封裝,它可以為你自動(dòng)設(shè)置后者的許多參數(shù),讓整個(gè)轉(zhuǎn)換過(guò)程更加簡(jiǎn)單一致,最后得到數(shù)據(jù)分析人員所期望的結(jié)果。

首先,下載并安裝Hmisc包(foreign包已被默認(rèn)安裝):

>install.packages("Hmisc")

>library(Hmisc)

>mydatframe<-spss.get("mydata.sav",use.value.lables="TRUE")

這段代碼中,mydata.sav是要導(dǎo)入的SPSS數(shù)據(jù)文件,use.value.labels=TRUE表示讓函數(shù)將帶有值標(biāo)簽的變量導(dǎo)入為R中水平對(duì)應(yīng)相同的因子,mydataframe是導(dǎo)入后的R數(shù)據(jù)框。

6導(dǎo)入SAS數(shù)據(jù)

R中設(shè)計(jì)了若干用來(lái)導(dǎo)入SAS數(shù)據(jù)集的函數(shù),包括foreign包中的read.ssd()和Hmisc包中的sas.get()。遺憾的是,如果使用的是SAS的較新版本(SAS 9.1或更高版本),你很可能會(huì)發(fā)現(xiàn)這些函數(shù)并不能正常工作,因?yàn)镽尚未跟進(jìn)SAS對(duì)文件結(jié)構(gòu)的改動(dòng)。個(gè)人推薦兩種解決方案。

你可以在SAS中使用PROC EXPORT將SAS數(shù)據(jù)集保存為一個(gè)逗號(hào)分隔的文本文件,并使用下敘述的方法將導(dǎo)出的文件讀取到R中:

SAS程序:

proc export data=mydata

outfile="mydata.csv"

dbms=csv

run;

R程序:

mydata<-read.table("mydata.csv",header=TRUE,sep=",")

7導(dǎo)入Stata數(shù)據(jù)

> library(foreign)

> mydata<-read.dta("mydata.dta")

這里,mydata.dta是Stata數(shù)據(jù)集,mydataframe是返回的R數(shù)據(jù)框.

8導(dǎo)入netCDF數(shù)據(jù)

Unidata項(xiàng)目主導(dǎo)的開(kāi)源軟件庫(kù)netCDF(network Common Data Form,網(wǎng)絡(luò)通用數(shù)據(jù)格式)定

義了一種機(jī)器無(wú)關(guān)的數(shù)據(jù)格式,可用于創(chuàng)建和分發(fā)面向數(shù)組的科學(xué)數(shù)據(jù)。netCDF格式通常用來(lái)存儲(chǔ)地球物理數(shù)據(jù)。ncdf包和ncdf4包為netCDF文件提供了高層的R接口。ncdf包為通過(guò)Unidata的netCDF庫(kù)(版本3或更早)創(chuàng)建的數(shù)據(jù)文件提供了支持,而且在Windows、MacOS X和Linux上均可使用。ncdf4包支持netCDF 4或更早的版本,但在Windows上尚不可用。

考慮如下代碼:

在本例中,對(duì)于包含在netCDF文件mynetCDFfile中的變量myvar,其所有數(shù)據(jù)都被讀取并保存到了一個(gè)名為myarray的R數(shù)組中。

9導(dǎo)入HDF5數(shù)據(jù)

HDF5(Hierarchical Data Format,分層數(shù)據(jù)格式)是一套用于管理超大型和結(jié)構(gòu)極端復(fù)雜數(shù)據(jù)集的軟件技術(shù)方案。hdf5包能夠以那些理解HDF5格式的軟件可以讀取的格式,將R對(duì)象寫(xiě)入到一個(gè)文件中。這些文件可以在之后被讀回R中。這個(gè)包是實(shí)驗(yàn)性質(zhì)的.

10訪問(wèn)數(shù)據(jù)庫(kù)管理系統(tǒng)

R中有多種面向關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的接口,包括MicrosoftSQL Server、MicrosoftAccess、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。使用R來(lái)訪問(wèn)存儲(chǔ)在外部數(shù)據(jù)庫(kù)中的數(shù)據(jù)是一種分析大數(shù)據(jù)集的有效手段(參見(jiàn)附錄G),并且能夠發(fā)揮SQL和R各自的優(yōu)勢(shì)。

1. ODBC接口

在R中通過(guò)RODBC包訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)也許是最流行的方式,這種方式允許R連接到任意一種擁有ODBC驅(qū)動(dòng)的數(shù)據(jù)庫(kù),其實(shí)幾乎就是市面上的所有數(shù)據(jù)庫(kù)。

第一步是針對(duì)你的系統(tǒng)和數(shù)據(jù)庫(kù)類型安裝和配置合適的ODBC驅(qū)動(dòng)——它們并不是R的一部分。如果你的機(jī)器尚未安裝必要的驅(qū)動(dòng),上網(wǎng)搜索一下應(yīng)該就可以找到。針對(duì)選擇的數(shù)據(jù)庫(kù)安裝并配置好驅(qū)動(dòng)后,請(qǐng)安裝RODBC包。你可以使用命令

install.packages("RODBC")來(lái)安裝它。

RODBC包中的主要函數(shù)列于表2-2中。

RODBC包允許R和一個(gè)通過(guò)ODBC連接的SQL數(shù)據(jù)庫(kù)之間進(jìn)行雙向通信。這就意味著你不僅可

以讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù)到R中,同時(shí)也可以使用R修改數(shù)據(jù)庫(kù)中的內(nèi)容。假設(shè)你想將某個(gè)數(shù)據(jù)庫(kù)

中的兩個(gè)表(Crime和Punishment)分別導(dǎo)入為R中的兩個(gè)名為crimedat和pundat的數(shù)據(jù)框,

可以通過(guò)如下代碼完成這個(gè)任務(wù):

library(RODBC)

myconn<-odbcConnect("mydsn",uid="Rob",pwd="aardvark")

crimedat<-sqlFetch(myconn,Crime)

pundat<-sqlQuery(myconn,"select*from Punishment")

close(myconn)

這里首先載入了RODBC包,并通過(guò)一個(gè)已注冊(cè)的數(shù)據(jù)源名稱(mydsn)和用戶名(rob)以及密碼(aardvark)打開(kāi)了一個(gè)ODBC數(shù)據(jù)庫(kù)連接。連接字符串被傳遞給sqlFetch,它將Crime表復(fù)制到R數(shù)據(jù)框crimedat中。然后我們對(duì)Punishment表執(zhí)行了SQL語(yǔ)句select并將結(jié)果保存到數(shù)據(jù)框pundat中。最后,我們關(guān)閉了連接。函數(shù)sqlQuery()非常強(qiáng)大,因?yàn)槠渲锌梢圆迦肴我獾挠行?a href='/map/sql/' style='color:#000;font-size:inherit;'>SQL語(yǔ)句。這種靈活性賦予了你選擇指定變量、對(duì)數(shù)據(jù)取子集、創(chuàng)建新變量,以及重編碼和重命名現(xiàn)有變量的能力。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }