R語言入門2:數據結構-3

6. 因子(farcor)

在R語言中,因子是用來處理分類數據的,分類數據又可以分為有序和無序。我們可以把因子簡單理解為整數向量+標籤。比如,我們把性別(男,女)分別加上標籤(1和2),那麼1就代表男,2就代表女。

(1)如何創建因子

# 使用factor()函數創建因子> x <-factor(c("female","female","male","male","female"))> x[1] female female male male female #因子的內容Levels: female male #因子包含兩個水平# 創建因子時添加標籤> y<-factor(c("female","female","male","male","female"),levels = c("male","female")) # 使用levels()添加水平參數> y[1] female female male male female #因子的內容不變Levels: male female # 水平的順序發生了改變

當我們使用R進行統計分析時,可以通過因子指定分析的基線水平,這在統計分析中時非常重要的。

(2)對因子的操作

# 使用table()函數統計因子各水平的個數> table(y)y male female 2 3# 使用unclass()函數去掉因子的水平> unclass(y)[1] 2 2 1 1 2attr(,"levels") [1] "male" "female"

前面我們提高過,可以把因子簡單理解為整數向量+標籤。如果使用uncalss()函數去掉因子的水平後,再查看其屬性,會發生什麼呢?

> class(unclass(y))[1] "integer" #變成了整數型向量

7.缺失值(missing value)

在R中缺失值有兩種表示方式:NaN和NA。NaN一般用來表示數字的缺失,而NA可用來表示多種類型的缺失。因此,NA具有類型屬性,比如integer NA(整數缺失)和character NA(字元缺失)等。

判斷向量中是否含有與缺失值

# 創建一個含有NA類型缺失值的向量> x<- c(1,2,NA,3,NA,5)> is.na(x) # 使用is.na()函數查看是否含有NA[1] FALSE FALSE TRUE FALSE TRUE FALSE> is.nan(x) #使用is.nan()查看是否含有NaN[1] FALSE FALSE FALSE FALSE FALSE FALSE# 創建一個含有NaN和NA類型缺失值的向量> x<- c(1,2,NA,3,NaN,5)> is.na(x) # 使用is.na()函數查看是否含有NA[1] FALSE FALSE TRUE FALSE TRUE FALSE> is.nan(x)[1] FALSE FALSE FALSE FALSE TRUE FALSE #使用is.nan()查看是否含有NaN

以上例子說明,is.na()函數可識別NA和NaN類型的缺失值,而is.nan()函數只能識別NaN類型的缺失值,而不能識別NA類型的缺失值。這也說明了,NA包含NaN。

8.數據框(data frame)

在R中,數據框是用來存儲表格數據的。我們可以把數據框看做各元素長度相同的列表,每個元素代表一列數據,每個元素的長度代表行數,並且元素的類型可以不同。

(1)數據框的創建

# 使用data.frame()函數創建數據框> def <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,FALSE,TRUE,TRUE))> def id name gender1 1 a TRUE2 2 b FALSE3 3 c TRUE4 4 d TRUE

由上面輸出的結果可以看到,我們定義的第一個元素為數據框的第一列,第二個元素時數據框的第二列,第三個元素時數據框的第三類。並且,數據框和矩陣非常相似,所不同的是,矩陣中每一列中元素的類型都是一樣的,而數據框可以不同。

同時,我們還可以把數據框看成列表,數據框的第一列對應於列表的第一個元素,數據框的第二列對應於列表的第二個元素,數據框的第三類對應於列表的第三個元素:

> def2 <- list(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,FALSE,TRUE,TRUE))> def2$id[1] 1 2 3 4$name[1] "a" "b" "c" "d"$gender[1] TRUE FALSE TRUE TRUE

註:本文為我在慕課網課程R語言基礎的學習筆記,使用Markdown寫作。


推薦閱讀:

TAG:R編程語言 | 生物信息學 |