
關(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
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10