1. 程式人生 > >R語言之讀取Excel及csv資料

R語言之讀取Excel及csv資料

1、讀取R內建資料 data()

data()  #檢視資料集列表
data(mtcars)  #載入資料集

如用library()載入程式包後,可用data(package=”“)檢視包內附帶的資料集。

library(vcd)
data(package="vcd")  #檢視vcd包中的資料集
data(Arthritis,package = "vcd")  #載入資料集Arthritis

2、鍵盤輸入資料

a、呼叫文字編輯器edit()。
首先必須建立一個空的資料框或者矩陣,且資料框或者矩陣中的變數名與變數型別必須與最終資料集一致。下列程式碼建立了一個名為mydata的資料框,資料框裡儲存了姓名,英語成績,數學成績三個變數,且通過呼叫文字編輯器edit()

可修改或增加變數。

mydata<-data.frame(name=character(0),English=numeric(0),Math=numeric(0))   #建立一個空的資料框
mydata<-edit(mydata)
mydata

程式執行結果如下:
這裡寫圖片描述
可在此資料編輯器中直接輸入資料,或者通過單擊來修改變數名或者變數型別,也可以增加變數。
b、直接在程式中嵌入資料,程式碼如下:

> mydatatext<-"
+ name English Math
+ 張三  92      93
+ 李四  80      92
+ "
> mydata<-read.table(header=T,text=mydatatext)
> mydata name English Math 1 張三 92 93 2 李四 80 92

3、匯入帶分隔符的文字檔案(ASCII)

使用read.table()匯入一個帶分隔符的文字檔案,其輸出型別為資料框。語法如下:
read.table(file , header=F , sep=”” ,quote , row.names , col.names , na.strings=”NA” , colClasses , skip , stringsAsFactors=T, blank.lines.skip=T, strip.white=F, text,…)

引數 引數的解釋
file 需要讀入的檔名或者路徑。當需要讀入的檔案在R的工作目錄下時,file=files.name,否則file=”檔案的儲存路徑”,如以下程式碼中所示。也可以更改需讀入檔案的儲存目錄為R的工作目錄,然後file=file.names即可讀入檔案,但此法比較繁瑣,一般不推薦。
header 是否檔案的讀入第一行,預設值為FALSE。
sep 檔案中分開資料的分隔符。預設為sep=”“,表示分隔符為一個或多個空格、換行或回車。若分隔符為逗號,則sep=”,”;若為製表符,則sep=”\t”。
quote 設定如何引用字元型變數。若沒有分隔符,則quote=”\”。
row.names 用於指定行名的可選引數。
col.names 若header=F,用於指定列名的可選引數.如col.names=c(“name”,”English”)。
na.strings 用於表示缺失值的字元向量。預設為NA。即將NA判斷為缺失值,也可自行定義表示缺失值的字元。
colClasses 每一列的變數型別。如colClasses=c(“numeric”,”character”)表示將第一列定義為數值型,第二列定義為字元型。
skip 讀取資料前跳過的行數。
stringsAsFactors 字元向量是否需轉化為因子,預設值為T,可能會被colClasses所覆蓋。處理大型文字檔案時,設定為F可提高處理速度。
blank.lines.skip 是否跳過空白行,預設值為T。
strip.white 是否消除空白字元,預設值為F。
text 一個指定文字進行處理的字串。若text被設定了,則無需設定file,如以上直接在程式中嵌入資料集的程式碼所示。

下面使用read.table()來讀取一個分隔符為逗號,名為“分數”的csv檔案,程式碼如下:

>mydata<-read.table(header=T,file="C:\\Users\\mx\\Desktop\\分數.csv",sep=",")  #路徑中的單右斜槓“\”需換成雙右斜槓“\\”或者單左斜槓“/”。檔名後一定要加上副檔名
> mydata
  name English Math
1 張三      92   93
2 李四      80   92

與read.table()用法類似的函式還有read.csv(),read.delim()。
*

*4、讀取Excel資料read.xlsx()

a、將其儲存為csv格式,用前文所描述的方法讀取
b、直接用read.xlsx()讀取。讀取前確保已安裝“xlsxjars”,”rJava”,”xlsx”包,且第一次使用前需確保配置了Java環境。下載安裝的Java的位數必須與電腦位數、R的位數一致。
語法: read.xlsx(file, n),其中n表示要讀取的工作表序號。
如用read.xlsx()讀取以上名為“分數”的.xlsx形式,程式碼如下:

> library(xlsxjars)
> library(rJava)
> library(xlsx)
> mydata<-read.xlsx("C:\\Users\\mx\\Desktop\\分數.xlsx",1,encoding="UTF-8")   #encoding="UFT-8"調整中文字集符,防止表格中的中文讀取時亂碼
> mydata
  name English Math
1 張三      92   93
2 李四      80   92