1. 程式人生 > >R-資料載入(csv,excel,txt,rdata,spss,stata)

R-資料載入(csv,excel,txt,rdata,spss,stata)

原始資料可以從本地檔案,本地資料庫和網路上獲取。本地檔案主要包括:txt檔案,csv檔案,excel檔案,RData檔案,xml檔案。本地資料庫型別包括SQL Server,Access,MySQL,SQLite等常見資料庫。網路資料則包括直接存放在網路上的檔案資料(csv,excel,txt等)和需要進行爬取的網頁資料。
由於大部分的資料都是本地檔案和網上的檔案,因此這裡著重講解一下本地檔案和網上檔案的載入方式。有需要載入資料庫檔案,或諸如SPASS資料,SAS資料,Stata資料,XML資料等特殊資料的,可以留言給我。

1.從鍵盤中讀取資料

#1.設定要讀入資料的列名和資料型別
data=data.frame(name=character(0),age=numeric(0))
#2.edit()函式會自動彈出一個表格填寫想要輸入的資料
data=edit(data)

2.讀取txt資料和csv資料,網路資料

data=read.table(file/url, header=TRUE, sep="", row.names=c(), col.names=c(),encoding="", colClasses=c(), stringsAsFactors=TRUE)

read.table()函式可以讀取txt和csv兩種資料型別。
常用的引數也就是以下幾個:
file/url: 可以是本地檔案,如"mydic/xxx.csv",也可是指定具體網址的網路檔案。
header: TRUE表示資料含有列名,FALSE表示原始資料不含列名,只有資料。
sep: 指定資料之間的分隔符,預設為空。若是空格,則需要打一個空格鍵。
row.names:

若原始資料沒有列名,可以通過該引數指定列名。如:row.names=c(“name”,“age”,“height”).
col.names: 為資料指定行名稱。
encoding: 指定讀取資料時的編碼方式。有時候讀取中文資料時,會出現亂碼,這時候encoding="UTF-8"就可以解決問題。記住裡面UTF是大寫,不能小寫。
colClasses: 為每列指定資料型別。有時候讀取的資料型別不是我們想要的,可以在讀取時指定資料型別,如colClasses=c(“character”,“numeric”,“factor”).
stringAsFactors: 由於讀取資料時,函式會自動將字串資料轉化成因子型別。將該值設定為FALSE後,就不會自動轉化了。
其他引數不是很常用,如需要,可自行查資料。

3.讀取excel資料

R讀取excel資料前需要安裝並載入xlsx包,實質是呼叫該包進行資料讀寫的。
部分引數和上面的引數一致,這裡不再贅述,來看幾個特別的引數

#這個xlsx包一定要載入,否則無法讀取資料
liabrary(xlsx)
read.xlsx(file, sheetName="",sheetIndex=1,colIndex=c(), rowIndex=c())

sheetName: 由於一個excel檔案可能包含多個表,因此需要指定讀取哪個表。sheetName指定目標表的名稱。
**sheetIndex:**指定目標表的索引。(注意R中所有的索引都是從1開始的,這與Python是不一樣的)
colIndex: 指定需要讀取的列,如colIndex=c(1,3,4)。僅讀取第1,3,4 列。
rowIndex: 指定要讀取的行。

另外還有一個read.xlsx2()的函式,該函式用於處理大型的excle表格(超過10萬行),這個函式內部呼叫了java函式,因此用之前需要安裝java.

4.讀取csv資料

引數同read.table(), 不再贅述。

read.csv(file,...)

5.讀取RData資料

由於RData資料載入後並不顯示內部包含哪些資料集,因此可以通過str()函式檢視內部資料情況。

#load()函式載入資料,但返回的data並不是最終的資料集,而是資料集的一個容器。
data=load("xxx.RData")
#str()函式檢視容器內部資料集
str(data)

6.匯入SPSS,SAS,Stata資料

#需要載入Hmisc包
library(Hmisc)
#載入spss資料
data=spss.get("mydata.sav", use.value.labels=TRUE)
#載入SAS資料,需要提前安裝SAS軟體。
data=sas.get(datadir, member="clients",sasprog="c:/xx/xx/sas.exe")
#載入Stata資料
library(foreign)
data=read.dta("xxx.dta")

補充:

有其他資料型別載入需求或有任何疑問,可留言給我。轉載請標明出處,感謝。
歡迎關注公眾號:moisiets
資料小丸子