1. 程式人生 > >Mac版R語言入門(三)資料的匯入

Mac版R語言入門(三)資料的匯入

R語言(三)資料的匯入,包括以下幾個部分的內容:

R語言問題討論交流,歡迎關注我的新浪微博:Jenny愛學習

               1.資料型別介紹

               2.資料匯入

               3.抓取網路資料


一.資料型別

    1)Excel、Spreadsheet資料:

.csv格式資料

    2)文字檔案資料(非結構化資料,每一行長度不同):.txt格式資料

    3)delim 格式讀取

R語言直接讀取網路資料——通過R語言內建的具有網路通訊packages,分析金融資料

    4)xml包抓取網路資料

    5)RCurl語言包爬取

R可以處理的資料型別(模式)包括數值型、字元型、邏輯型(TRUE/FALSE)、複數型(虛數)、原生型(位元組)。

儲存資料的物件型別:


標量:只含有一個元素的向量

.用於儲存常量

                      f <-3 , g <-"US" , h <- TRUE

 

向量        1.只能包含一種資料型別

                     

通過在方括號中給定元素所處位置的數值,可以訪問向量中的元素。a[c(2,4)]訪問向量a中的第二個和第四個元素。               

 

>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]                                          #取第(23)元素

[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第四部分

      方法IRODBC

                  RODBC依賴於ODBC的驅動程式管理器,安裝完RODBC之後,需要配置ODBC的驅動程式,實現連線之後,才能呼叫RODBC的包。此處需要注意SQL的版本和R版本的相容。

      方法II:XLSX包

                   XLSX包,需要安裝rJAVA的程式包。與電腦環境有關,電腦安裝rJava難度很大,不建議使用

      方法IIIXLConnect

                 XLConnect安裝

              

package安裝完成


5)網路資料的訪問

>read.csv("https://figshare.com/articles/Data_xlsx/4233182")






【方法二】RStudio