
關(guān)于R從不同數(shù)據(jù)源導(dǎo)入數(shù)據(jù)的幾種方式總結(jié)
1 使用鍵盤輸入數(shù)據(jù)
(1) 創(chuàng)建一個空數(shù)據(jù)框(或矩陣),其中變量名和變量的模式需與理想中的最終數(shù)據(jù)集一致;
(2)針對這個數(shù)據(jù)對象調(diào)用文本編輯器,輸入你的數(shù)據(jù),并將結(jié)果保存回此數(shù)據(jù)對象中。
在下例中,你將創(chuàng)建一個名為mydata的數(shù)據(jù)框,它含有三個變量: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ù)可讀入一個表格格式
的文件并將其保存為一個數(shù)據(jù)框。其語法如下:
mydataframe<-read.table(file.header=logical_value,sep="delimiter",row,names="name")
其中,file是一個帶分隔符的ASCII文本文件,header是一個表明首行是否包含了變量名的邏輯值(TRUE或FALSE),sep用來指定分隔數(shù)據(jù)的分隔符,row.names是一個可選參數(shù),用以指定一個或多個表示行標(biāo)識符的變量。
請注意,參數(shù)sep允許你導(dǎo)入那些使用逗號以外的符號來分隔行內(nèi)數(shù)據(jù)的文件。你可以使用
sep="\t"讀取以制表符分隔的文件。此參數(shù)的默認(rèn)值為sep="",即表示分隔符可為一個或多個空格、制表符、換行符或回車符.
默認(rèn)情況下,字符型變量將轉(zhuǎn)換為因子。我們并不總是希望程序這樣做(例如處理一個含有被調(diào)查者評論的變量時)。有許多方法可以禁止這種轉(zhuǎn)換行為。其中包括設(shè)置選項(xiàng)stringsAsFactors=FALSE,這將停止對所有字符型變量的此種轉(zhuǎn)換。另一種方法是使用選項(xiàng)
colClasses為每一列指定一個類,例如logical(邏輯型)、numeric(數(shù)值型)、character
(字符型)、factor(因子)。
函數(shù)read.table()還擁有許多微調(diào)數(shù)據(jù)導(dǎo)入方式的追加選項(xiàng)。
3 導(dǎo)入 Excle數(shù)據(jù)
讀取一個Excel文件的最好方式,就是在Excel中將其導(dǎo)出為一個逗號分隔文件(csv),并使用前文描述的方式將其導(dǎo)入R中。在Windows系統(tǒng)中,你也可以使用RODBC包來訪問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是一個Excel文件,mysheet是要從這個工作簿中讀取工作表的名稱,
channel是一個由odbcConnectExcel()返回的RODBC連接對象,mydataframe是返回的數(shù)據(jù)框
注意:Excel2007使用了一種名為XLSX的文件格式,實(shí)質(zhì)上是多個XML文件組成的壓縮包。xlsx包可以用來讀取這種格式的電子表格。在第一次使用此包之前請務(wù)必先下載并安裝好。包中的函數(shù)read.xlsx()可將XLSX文件中的工作表導(dǎo)入為一個數(shù)據(jù)框。其最簡單的調(diào)用格式是read.xlsx(file,n),其中file是Excel2007工作簿的所在路徑,n則為要導(dǎo)入的工作表序號。
library(xlsx)
workbook<-"c:/mywoehbook.xlsx"
mydataframe<-read.xlsx(workbook,1)
從位于C盤根目錄的工作簿myworkbook.xlsx中導(dǎo)入了第一個工作表.
4從網(wǎng)頁抓取數(shù)據(jù)
在Web數(shù)據(jù)抓?。╓ebscraping)的過程中,用戶從互聯(lián)網(wǎng)上提取嵌入在網(wǎng)頁中的信息,并將其保存為R中的數(shù)據(jù)結(jié)構(gòu)以做進(jìn)一步的分析。完成這個任務(wù)的一種途徑是使用函數(shù)readLines()下載網(wǎng)頁,然后使用如grep()和gsub()一類的函數(shù)處理它。對于結(jié)構(gòu)復(fù)雜的網(wǎng)頁,可以使用RCurl包和XML包來提取其中想要的信息。
5 導(dǎo)入SPSS數(shù)據(jù)
SPSS數(shù)據(jù)集可以通過foreign包中的函數(shù)read.spss()導(dǎo)入到R中,也可以使用Hmisc包中的spss.get()函數(shù)。函數(shù)spss.get()是對read. spss()的一個封裝,它可以為你自動設(shè)置后者的許多參數(shù),讓整個轉(zhuǎ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中水平對應(yīng)相同的因子,mydataframe是導(dǎo)入后的R數(shù)據(jù)框。
6導(dǎo)入SAS數(shù)據(jù)
R中設(shè)計(jì)了若干用來導(dǎo)入SAS數(shù)據(jù)集的函數(shù),包括foreign包中的read.ssd()和Hmisc包中的sas.get()。遺憾的是,如果使用的是SAS的較新版本(SAS 9.1或更高版本),你很可能會發(fā)現(xiàn)這些函數(shù)并不能正常工作,因?yàn)镽尚未跟進(jìn)SAS對文件結(jié)構(gòu)的改動。個人推薦兩種解決方案。
你可以在SAS中使用PROC EXPORT將SAS數(shù)據(jù)集保存為一個逗號分隔的文本文件,并使用下敘述的方法將導(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)的開源軟件庫netCDF(network Common Data Form,網(wǎng)絡(luò)通用數(shù)據(jù)格式)定
義了一種機(jī)器無關(guān)的數(shù)據(jù)格式,可用于創(chuàng)建和分發(fā)面向數(shù)組的科學(xué)數(shù)據(jù)。netCDF格式通常用來存儲地球物理數(shù)據(jù)。ncdf包和ncdf4包為netCDF文件提供了高層的R接口。ncdf包為通過Unidata的netCDF庫(版本3或更早)創(chuàng)建的數(shù)據(jù)文件提供了支持,而且在Windows、MacOS X和Linux上均可使用。ncdf4包支持netCDF 4或更早的版本,但在Windows上尚不可用。
考慮如下代碼:
在本例中,對于包含在netCDF文件mynetCDFfile中的變量myvar,其所有數(shù)據(jù)都被讀取并保存到了一個名為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對象寫入到一個文件中。這些文件可以在之后被讀回R中。這個包是實(shí)驗(yàn)性質(zhì)的.
10訪問數(shù)據(jù)庫管理系統(tǒng)
R中有多種面向關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(DBMS)的接口,包括MicrosoftSQL Server、MicrosoftAccess、MySQL、Oracle、PostgreSQL、DB2、Sybase、Teradata以及SQLite。使用R來訪問存儲在外部數(shù)據(jù)庫中的數(shù)據(jù)是一種分析大數(shù)據(jù)集的有效手段(參見附錄G),并且能夠發(fā)揮SQL和R各自的優(yōu)勢。
1. ODBC接口
在R中通過RODBC包訪問一個數(shù)據(jù)庫也許是最流行的方式,這種方式允許R連接到任意一種擁有ODBC驅(qū)動的數(shù)據(jù)庫,其實(shí)幾乎就是市面上的所有數(shù)據(jù)庫。
第一步是針對你的系統(tǒng)和數(shù)據(jù)庫類型安裝和配置合適的ODBC驅(qū)動——它們并不是R的一部分。如果你的機(jī)器尚未安裝必要的驅(qū)動,上網(wǎng)搜索一下應(yīng)該就可以找到。針對選擇的數(shù)據(jù)庫安裝并配置好驅(qū)動后,請安裝RODBC包。你可以使用命令
install.packages("RODBC")來安裝它。
RODBC包中的主要函數(shù)列于表2-2中。
RODBC包允許R和一個通過ODBC連接的SQL數(shù)據(jù)庫之間進(jìn)行雙向通信。這就意味著你不僅可
以讀取數(shù)據(jù)庫中的數(shù)據(jù)到R中,同時也可以使用R修改數(shù)據(jù)庫中的內(nèi)容。假設(shè)你想將某個數(shù)據(jù)庫
中的兩個表(Crime和Punishment)分別導(dǎo)入為R中的兩個名為crimedat和pundat的數(shù)據(jù)框,
可以通過如下代碼完成這個任務(wù):
library(RODBC)
myconn<-odbcConnect("mydsn",uid="Rob",pwd="aardvark")
crimedat<-sqlFetch(myconn,Crime)
pundat<-sqlQuery(myconn,"select*from Punishment")
close(myconn)
這里首先載入了RODBC包,并通過一個已注冊的數(shù)據(jù)源名稱(mydsn)和用戶名(rob)以及密碼(aardvark)打開了一個ODBC數(shù)據(jù)庫連接。連接字符串被傳遞給sqlFetch,它將Crime表復(fù)制到R數(shù)據(jù)框crimedat中。然后我們對Punishment表執(zhí)行了SQL語句select并將結(jié)果保存到數(shù)據(jù)框pundat中。最后,我們關(guān)閉了連接。函數(shù)sqlQuery()非常強(qiáng)大,因?yàn)槠渲锌梢圆迦肴我獾挠行?a href='/map/sql/' style='color:#000;font-size:inherit;'>SQL語句。這種靈活性賦予了你選擇指定變量、對數(shù)據(jù)取子集、創(chuàng)建新變量,以及重編碼和重命名現(xiàn)有變量的能力。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗(yàn):捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03