R語言學習筆記——數據結構 & 數據框基本操作


參考書籍:R語言實戰

 

數據結構:

1. 向量 : 用於存儲數值型、字符型或邏輯型數據的一維數組
  1.1 創建 : a <- c(1, 2, 3, 4)

  1.2 訪問 : a[1] : 1

       a[c(2, 4)] : 2 4 (向量a中的第二個和第四個元素)

       a[1:4] : 1 2 3 4 (向量a中的第一個直到第四個元素)

  1.3 注意 : 

      1)  單個向量中的數據必須擁有相同的類型或模式(數值型、字符型或邏輯型)
      2) 標量是只含一個元素的向量,例如f <- 3 、 g <- "US" 和h <- TRUE。它們用於保存常量

2. 矩陣 : 矩陣是一個二維數組,只是每個元素都擁有相同的模式(數值型、字符型或邏輯型)

  2.1 創建 : mymatrix <- matrix(vector, nrow=number_of_row, ncol=number_of_col, byrow=logical_value, dimnames=list(char_vector_rownames,                   char_vector_colnames))

       其中vector包含了矩陣的元素, nrow和ncol用以指定行和列的維數, dimnames包含了可選的、以字符型向量表示的行名和列名。選項byrow則表明矩陣應當按
       行填充( byrow=TRUE)還是按列填充( byrow=FALSE),默認情況下按列填充

         

 

 

                  

 

  2.2 訪問 : 

 

        

 

 

 

 

 

 

  2.3 注意 : 

      1)  矩陣都是二維的,和向量類似,矩陣中也僅能包含一種數據類型。當維度超過2時,不妨使用數組。當有多種模式的數據時,不妨使用數據框

3. 數組 : 數組( array)與矩陣類似,但是維度可以大於2
  3.1 創建 : myarray <- array(vector, dimensions, dimnames)

    其中vector包含了數組中的數據, dimensions是一個數值型向量,給出了各個維度下標的最大值,而 dimnames 是可選的、各維度名稱標簽的列表

    

  3.2 訪問 : 從數組中選取元素的方式與矩陣相同。上例中,元素z[1,2,3] 為15

  3.3 注意 :

      1) 數組中的數據也只能擁有一種模式

  

4. 數據框 : 由於不同的列可以包含不同模式(數值型、字符型等)的數據,數據框的概念較矩陣來說更為一般。
  4.1 創建 : data.frame(col1, col2, col3 , ...)
      

  4.2 訪問 :  $ 

        

    為避免過多使用$,可用attach(),detach()和with()/within()來簡化代碼

    1) attach()和detach() : 函數attach() 可將數據框添加到R的搜索路徑中, 函數detach() 將數據框從搜索路徑中移除

      attach(dataframe)

      #省略$的代碼

      detach(dataframe)

      缺點 : 同名對象會被屏蔽

    2) with()

      with(dataframe, 

          {

            #省略$的代碼

          }

      )

      缺點 : 函數with() 的局限性在於,賦值僅在此函數的括號內生效
         如果你需要創建在with() 結構以外存在的對象,使用特殊賦值符<<-替代標准賦值符( <-)即可,它可將對象保存到with() 之外的全局環境中。

   3) within()

    within(dataframe,

      {

        #省略$的代碼

      }

    )

    函數within() 與函數with() 類似,不同的是它允許你修改數據框

5. 列表 : 列表就是一些對象(或成分,component)的有序集合
  5.1 創建 : list(name=object1, name=object2,...)

  5.2 訪問 :

  5.3 注意 : 

    1) 由於兩個原因,列表成為了R中的重要數據結構。首先,列表允許以一種簡單的方式組織和重新調用不相干的信息。其次,許多R函數的運行結果都是以列表的形式返回的。需要取出其中哪些成分由分析人員決定。


數據框操作 :

1. 添加列 merge(dataframe1, datafrme2, by=c())

     cbind(df1, df2) (橫向合並對象1和對象2。為了讓它正常工作,每個對象必須擁有相同的行數,且要以相同順序排序。)

2. 添加行 rbind(df1, df2)

3. 取子集  

  myvars <- c("q1", "q2", "q3", "q4", "q5")

  newdata <- leadership[myvars] (即選取了五列 : q1, q2, q3, q4, q5)

4. 丟棄變量

  myvars <- names(leadership)%in%c("q3", "q4")

  newdata <- leadership[!myvars] (丟棄q3, q4列)

5. 選入觀測

  newdata <- leadership[1:3, ] (選擇了第一到第三行的所有列)

  newdata <- leadership[which(leadership$gender=='M' & leadership$age > 30), ]

6. subset()函數

  newdata <- subset(leadership, age>=35 | age < 24, select = c(q1, q2, q3, q4))

  newdata <- subset(leadership, gender == 'M' & age > 25, select=gender:q4)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM