R action 2

20171205(從有道遷移)

數(shù)據(jù)集

  1. 數(shù)據(jù)類型(模式)包括:數(shù)值型、字符型、邏輯型(TRUE/FALSE)、復(fù)數(shù)型(虛數(shù))和原生型(字節(jié))

  2. R擁有許多用于存儲數(shù)據(jù)的對象類型,包括標(biāo)量、向量、矩陣、數(shù)組、數(shù)據(jù)框和列表

    • 標(biāo)量
      • 是只含一個元素的向量,例如f <- 3、g <- "US"和h <- TRUE。它們用于保存常量
    • 向量
      • 向量是用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組
      • 執(zhí)行組合功能的函數(shù)c()可用來創(chuàng)建向量
      • 單個向量中的數(shù)據(jù)必須擁有相同的類型或模式(數(shù)值型、字符型或邏輯型)。同一向量中無法混雜不同模式的數(shù)據(jù)。==如果采用混雜模式,則會統(tǒng)一變成字符型數(shù)據(jù)==
      • 通過在方括號中給定元素所處位置的數(shù)值,我們可以訪問向量中的元素。例如,a[c(2, 4)]用于訪問向量a中的第二個和第四個元素
      a<-c(1,2,5,3,6,-2,4)
      a[2]
      a[c(1,3,5)]
      a[2:6]
      
    • 矩陣
      • 矩陣是一個二維數(shù)組,只是每個元素都擁有相同的模式(數(shù)值型、字符型或邏輯型)
      • 可通過函數(shù)matrix創(chuàng)建矩陣
      • matrix(vector, nrow = number_of_rows , ncol = number_of_columns, byrow = logical_value, dimnames = list(char_vector_rownames,char_vector_colnames)),
        • vector包含矩陣的元素
        • nrow和ncol分別指定行和列的維數(shù)
        • dimnames包含了可選的以字符串向量表示的行名和列名
        • 選項byrow則表明矩陣應(yīng)當(dāng)按行填充(byrow=TRUE)還是按列填充(byrow=FALSE),默認(rèn)情況下按列填充
      • 使用下標(biāo)和方括號來選擇矩陣中的行、列或元素
        • X[i,]指矩陣X中的第i 行
        • X[,j]指第j 列
        • X[i, j]指第i 行第j 個元素
        • 選擇多行或多列時,下標(biāo)i 和j 可為數(shù)值型向量
      cells <- c(1,26,24,68)
      rnames <- c("R1","R2")
      cnames <- c("C1","C2")
      mymatrix <- matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))
      mymatrix[2,]
      mymatrix[,2]
      mymatrix[1,c(1,2)]
      
    • 數(shù)組
      • 數(shù)據(jù)與矩陣類似,但是緯度可以大于2
      • 通過array創(chuàng)建數(shù)組
      • array(vector,dimensions,dimnames)
        • vector包含了數(shù)組中的數(shù)據(jù)
        • dimensions是一個數(shù)值型向量,給出了各個維度下標(biāo)的最大值
        • dimnames是可選的、各維度名稱標(biāo)簽的列表。
      • 從數(shù)組中選取元素的方式與矩陣相同。
      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,2,3]
      z[c(1,2),1,1]
      
    • 數(shù)據(jù)框
      • 數(shù)據(jù)框不同的列可以包含不同模式(數(shù)值型、字符型等)的數(shù)據(jù)
      • 數(shù)據(jù)框可通過函數(shù)data.frame()創(chuàng)建
      • data.frame(col1,col2,col3,...)
        • 其中的列向量col1, col2, col3,… 可為任何類型(如字符型、數(shù)值型或邏輯型)
        • 每一列的名稱可由函數(shù)names指定
      patientID <- c(1:4)
      age <- c(25,34,28,52)
      disbetes <- c("Type1","Type2","Type1","Type1")
      status <- c("Poor","Improved","Excellent","Poor")
      patientdata <- data.frame(patientID,age,disbetes,status)
      
      • 選取數(shù)據(jù)框中元素的方式有若干種。你可以使用前述(如矩陣中的)下標(biāo)記號,亦可直接指定列名
      • $用來選取一個給定數(shù)據(jù)框中的某個特定變量
      patientdata[1,3]  -- 指定某行某列的值
      patientdata[1:3]  -- 指定1到3列的所有行值
      patientdata[c("disbetes","status")] -- 指定列名
      patientdata$age 指定age列
      
      • 實例標(biāo)識符:用于區(qū)分?jǐn)?shù)據(jù)集中不同的個體。在R中,實例標(biāo)識符(case identifier)可通過數(shù)據(jù)框操作函數(shù)中的rowname選項指定
      patientdata <- data.frame(patientID,age,disbetes,status,row.names=patientID)
      
    • 數(shù)據(jù)集操作
      • attach函數(shù)
        • 函數(shù)attach()可將數(shù)據(jù)框添加到R的搜索路徑中;
        • R在遇到一個變量名以后,將檢查搜索路徑中的數(shù)據(jù)框,以定位到這個變量
        • attach(what, pos = 2L, name = deparse(substitute(what)), warn.conflicts = logical_value,default TRUE)
        summary(mtcars$mpg)
        attach(mtcars)
        summary(mpg)
        
      • detach函數(shù)
        • 函數(shù)detach()將數(shù)據(jù)框從搜索路徑中移除
        detach(mtcars)
        summary(mpg)  -- 找不到mpg
        
      • with函數(shù)
        • 只在with函數(shù)范圍內(nèi)將數(shù)據(jù)框添加到R的搜索路徑中
        with(mtcars,{
              summary(mpg)
              plot(mpg,disp)
          })
          
        --如果不是使用換行,則需要在語句后用;進(jìn)行分隔
        with(mtcars,{summary(mpg);plot(mpg,disp)})
        
    • 因子
      • 變量可歸結(jié)為名義型(唯一標(biāo)識或者不同序列值)、有序型(有先后順序的一系列值)或連續(xù)型變量(呈現(xiàn)為某個范圍內(nèi)的任意值,并同時表示了順序和數(shù)量)。
      • 類別(名義型)變量和有序類別(有序型)變量在R中稱為因子(factor)
      • 函數(shù)factor()以一個整數(shù)向量的形式存儲類別值,整數(shù)的取值范圍是[1... k ](其中k 是名義型變量中唯一值的個數(shù)),同時一個由字符串(原始值)組成的內(nèi)部向量將映射到這些整數(shù)上
      diabetes <- c("Type1","Type2","Type1","Type1")
      diabetes <- factor(diabetes)將此向量存儲為(1, 2, 1, 1),并在內(nèi)部將其關(guān)聯(lián)為1=Type1和2=Type2
      
    • 列表
      • 列表就是一些對象(或成分,component)的有序集合。
      • 列表允許你整合若干(可能無關(guān)的)對象到單個對象名下
      • 函數(shù)list()創(chuàng)建列表:mylist <- list(object1, object2,...)
      • 為列表中的對象命名:mylist <- list(name1=object1, name2=object2, ...)
      mylist <- list(title=g,ages=c,j,k)
      mylist[[2]]
      mylist[["ages"]]
      
  3. 數(shù)據(jù)輸入

    • RGui輸入數(shù)據(jù),用 mydata <- edit(mydata),就能夠編輯已經(jīng)輸入的數(shù)據(jù)并添加新的數(shù)據(jù)
    • 從帶分隔符的文本文件導(dǎo)入數(shù)據(jù)
      • mydataframe <- read.table(file,header=logical_value,sep="delimiter",row.names="name")
        • file是一個帶分隔符的ASCII文本文件
        • header是一個表明首行是否包含了變量名的邏輯值(TRUE或FALSE)
        • sep用來指定分隔數(shù)據(jù)的分隔符, 可以使用sep="\t"讀取以制表符分隔的文件。默認(rèn)值為sep="",即表示分隔符可為一個或多個空格、制表符、換行符或回車符
        • row.names是一個可選參數(shù),用以指定一個或多個表示行標(biāo)識符的變量
        • stringsAsFactors=FALSE,禁止字符型變量轉(zhuǎn)換成因子
        • colClasses為每一列指定一個類,例如logical(邏輯型)、numeric(數(shù)值型)、character(字符型)、factor(因子)
    • RODBC訪問數(shù)據(jù)庫&Excel數(shù)據(jù)(32bite Windows only)
      • RODBC包訪問一個數(shù)據(jù)庫,有其他包

        • 安裝包install.packages("RODBC")
        • 加載包library("RODBC")
        • 訪問Excel命令
        channel <- odbcConnectExcel(file)
        mydataframe <- sqlFetch(channel,"mysheet")
        odbcClose(channel)
        
        • 訪問數(shù)據(jù)庫命令
        函數(shù) 描述
        odbcConnect(dsn,uid="",pwd="") 建立一個到ODBC數(shù)據(jù)庫的連接
        sqlFetch(channel,sqltable) 讀取ODBC數(shù)據(jù)庫中的某個表到一個數(shù)據(jù)框中
        sqlQuery(channel,query) 向ODBC數(shù)據(jù)庫提交一個查詢并返回結(jié)果
        sqlSave(channel,mydf,tablename=sqtable,append=FALSE) 將數(shù)據(jù)框?qū)懭牖蚋拢╝ppend=TRUE)到ODBC數(shù)據(jù)庫的某個表中
        sqlDrop(channel,sqtable) 刪除ODBC數(shù)據(jù)庫中的某個表

        close(channel) 關(guān)閉連接

      • xlsx特殊格式,使用xlsx包,其他包可以到。。找

  4. 數(shù)據(jù)集標(biāo)注

    • 目的:為某個列名或者數(shù)據(jù)值添加明顯的名稱以此來識別或者標(biāo)注
    • 可以采用值標(biāo)簽的方式patientdatagender <- factor(patientdatagendar,levels=c(1,2),labels=c("male","female"))來創(chuàng)建標(biāo)簽值,這里levels代表變量的實際值,而labels表示包含了理想值標(biāo)簽的字符型向量
  5. 處理數(shù)據(jù)對象的實用函數(shù)

    函數(shù) 用途
    length(object) 顯示對象中元素/成分的數(shù)量
    dim(object) 顯示某個對象的維度
    str(object) 顯示某個對象的結(jié)構(gòu)
    class(object) 顯示某個對象的類或類型
    mode(object) 顯示某個對象的模式
    names(object) 顯示某對象中各成分的名稱
    c(object, object,…) 將對象合并入一個向量
    cbind(object, object, …) 按列合并對象
    rbind(object, object, …) 按行合并對象
    Object 輸出某個對象
    head(object) 列出某個對象的開始部分
    tail(object) 列出某個對象的最后部分
    ls() 顯示當(dāng)前的對象列表
    rm(object, object, …) 刪除一個或更多個對象。語句rm(list = ls())將刪除當(dāng)前工作環(huán)境中的幾乎所有對象*

    newobject <- edit(object) 編輯對象并另存為newobject
    fix(object) 直接編輯對象

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容