Mac版R語言入門(三)資料的匯入
R語言(三)資料的匯入,包括以下幾個部分的內容:
R語言問題討論交流,歡迎關注我的新浪微博:Jenny愛學習1.資料型別介紹
2.資料匯入
3.抓取網路資料
一.資料型別
1)Excel、Spreadsheet資料:
2)文字檔案資料(非結構化資料,每一行長度不同):.txt格式資料
3)delim 格式讀取
R語言直接讀取網路資料——通過R語言內建的具有網路通訊packages,分析金融資料
4)xml包抓取網路資料
5)RCurl語言包爬取
R可以處理的資料型別(模式)包括數值型、字元型、邏輯型(TRUE/FALSE)、複數型(虛數)、原生型(位元組)。
儲存資料的物件型別:
標量:只含有一個元素的向量
f <-3 , g <-"US" , h <- TRUE
向量: 1.只能包含一種資料型別
>a <-c(1,2,2,4)
>a
[1] 1 2 24
> a <- c(1:10) #生成數值序列
>a
[1] 1 2 3 4 5 6 7 8 9 10
> a[2] #取單個向量
[1] 2
> a[c(3,7,8)] #取多個向量
[1] 3 7 8
矩陣matrix: 1.二維陣列
2.只能包含一種資料型別,每個元素擁有相同的模式(數值型、字元型或邏輯型)
mymatrix <- matrix (vector矩陣元素,nrow=行數,ncol=列數,dimnames=list(以字元型向量表示的列名和行名),byrow=T矩陣按行填充,預設情況下按列填充)
##Example1 of setting row and column names
mdat<- matrix(c(1,2,3,11,12,13), nrow = 2, ncol = 3, byrow = TRUE, dimnames =list(c("row1", "row2"),c("C.1", "C.2","C.3")))
##Example2 of setting row and column names
> cells <- c(1,26,24,68)
>rnames <- c ("R1","R2") #給行取名
>cnames <- c("C1","C2") #給列取名
> mymatrix <-matrix(cells,nrow=2,ncol=2,byrow=T,dimnames=list(rnames,cnames))
> mymatrix
C1 C2
R1 1 26
R2 24 68
> x <-matrix(1:20,nrow=4) #nrow確認,ncol預設
>x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> x[1,] #取第二行
[1] 1 5 9 13 17
>x[3,] #取第三行
[1] 3 7 1115 19
> x[,2] #取第二列
[1] 5 6 78
>x[,4] #取第四列
[1] 13 1415 16
>x[2,3] #取第(2,3)元素
[1] 10
>x[1,c(4,5)] #取第一行,第四、第五列第元素
[1] 13 17
陣列 array: 1 .維度超過2時用陣列,陣列中的資料只能擁有一種模式
2.陣列是矩陣的一個自然推廣,2維的陣列相當於矩陣A two-dimensional array is the same thing as a matrix.
3.一維陣列看起來像向量One-dimensionalarrays often look like vectors, but may be handled differently by somefunctions: str does distinguishthem in recent versions of R.
myarray <- array(vector陣列中的資料, dimensions=c(1,2,3……)各個維度下標的最大值, dimnames各個維度名稱標籤的列表)
>dim1 <-c("A1","A2")
>dim2 <-c("B1","B2","B3")
> dim3 <-c("C1","C2","C3","C4")
> z <-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))
>z
資料框: 1.多種模式資料(數值型、字元型等)時,使用資料框。不同的列可以包含不同模式的資料。等價於SAS、SPSS、Stata中看到
的資料集
2.由於資料有多種模式,無法將此資料集放入一個矩陣,這種情況下,使用資料框是最佳選擇
mydata<- data.frame (col1,col2,col3,……) #其中的列向量col1,col2,col3……可為任何型別,每一列的名稱可由函式names指定
> patientID<- c(1,2,3,4) #每一列的資料模式必須唯一
> age <-c(25,34,28,52)
> diabetes <-c("Type1","Type2","Type1","Type1")
> status <-c("Poor","Improved","Excellent","Poor")
> patientdata <-data.frame(patientID,age,diabetes,status) #每一列的資料模式必須唯一,但可以將多個模式的不同列放到一起組成資料框
> patientdata
patientID age diabetes status
1 1 25 Type1 Poor
2 2 34 Type2 Improved
3 3 28 Type1 Excellent
4 4 52 Type1 Poor
> patientdata[1:2] #選取資料框中的元素
patientID age
1 1 25
2 2 34
3 3 28
4 4 52
>patientdata[c("diabetes","status")] #選取資料框中的元素
diabetes status
1 Type1 Poor
2 Type2 Improved
3 Type1 Excellent
4 Type1 Poor
> patientdata$age #$被用來選取一個給定資料框中的某個特定變數
[1] 25 3428 52
> table(patientdata$diabetes,patientdata$status) #生成糖尿病型別變數diabetes和病情變數status的列聯表
Excellent Improved Poor
Type1 1 0 2
Type2 0 1 0
列表
二.小容量批處理資料
R語言是基於記憶體的資料統計和分析軟體,的記憶體會影響R的執行處理速度。當需要處理T級、Z級資料時,解決方法為演算法優化或利用R的packages函式處理大資料,具體實現方法會在後面的部落格中介紹給大家。
1.read.命令讀取資料
【此處引用資料來自: https://figshare.com 開放資料平臺】
【方法一】RConsole
>setwd("~/Desktop") #設定工作路徑/目錄
>getwd() #檢視設定的工作路徑
1) txt資料讀取
>read.table("~/Desktop/Data.txt",header=TRUE)
2)csv資料讀取
>read.csv("~/Desktop/Data.csv",header=TRUE) #讀取excel/Spreadsheet中的資料
3)非結構化文字資料的讀取
>readLines("~/Desktop/Article.txt") #非結構化文字格式的讀取,按行進行資料讀入
4)Excel檔案的讀入
excel檔案的讀入,依賴的擴充套件packages,很多是需要Java才能安裝,如果是普通的excel檔案,可以轉換為.csv格式,可以先將excel檔案轉化為.csv格式的檔案再進行讀取。
直接讀取excel檔案的方法:
(packages的安裝方法見 本系列部落格Mac版R語言入門(一)R語言入門操作http://blog.csdn.net/nicolelovesmath/article/details/53244337第四部分)
方法I:RODBC包
RODBC依賴於ODBC的驅動程式管理器,安裝完RODBC之後,需要配置ODBC的驅動程式,實現連線之後,才能呼叫RODBC的包。此處需要注意SQL的版本和R版本的相容。
方法II:XLSX包
XLSX包,需要安裝rJAVA的程式包。與電腦環境有關,電腦安裝rJava難度很大,不建議使用
方法III:XLConnect包
XLConnect安裝
package安裝完成
5)網路資料的訪問
>read.csv("https://figshare.com/articles/Data_xlsx/4233182")
【方法二】RStudio