當前位置:首頁 » 網路管理 » r語言如何刪除某個因子
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

r語言如何刪除某個因子

發布時間: 2023-07-13 12:49:41

❶ R語言基礎教程 | 數據結構—因子

變數可歸結為名義型、有序型或連續型變數。名義型變數是沒有順序之分的類別變數。類別(名義型)變數和有序類別(有序型)變數在R中稱為因子(factor)。因子在R中非常重要,因為它決定了數據的分析方式以及如何進行視覺呈現。因子(factor)是R語言中比較特殊的一個數據類型, 它是一個用於存儲 的類型,舉個例子,從性別上,可以把人乎鏈春分為:男人和女人,從年齡上劃分,又可以把人分為:未成年人(<18歲),成年人(>=18)。

R把表示分類的數據稱為因子,因子的行為有時像字元串,有時像整數。因子是一個向量,通常情況下,每個元素都是字元類型,也有其他數據喚芹類型的元素。因子具有因子水平(Levels),用於限制因子的元素的取值范圍,R強制:因子水平是字元類型,因子的元素只能從因子水平中取值,這意味著,因子的每個元素要麼是因子水平中的字元(或轉換為其他數據類型),要麼是缺失值,這是因子的約束,是語法上的規則。

通常情況下,在創建數據框變數時,R隱式把數據類型為字元的列創建為因子,這是因為R會把文本類型默認為類別數據,並自動轉換為因子。前面我們在講數據框時,就有提到。

通過class()函數檢查gender列的類,結果是因子類型,而不是字元向量。

可以通過factor()函數創建因子,factor()函數的第一個參數必須是字元向量,通過levels參數顯式設置因子水平。

參數注釋:

例如,因子sex的值是向量c('f','m','f','f','m'),因子水平是c('f','m')

因子水平規定了 因子取值的范圍 ,每一個因子,都包含因子水平的信息,例如,列印gender列,可以看到因子的元素和水平:

該因子中的每個值都是一個字元串,它們被限制為「f」、「m」和缺失值(NA)。如果把其他字元串添加到gender列中,R會拋出警告消息,並把錯誤賦值的元素設置為NA,例如:

因子水平,可以通過函數levels(factor)來查看:

水平的級數,相當於level的長度,可以由nlevels函數查詢到:

使用factor函數創建因子,可以使用labels參數為每個因子水平添加標簽,labels參數的字元順序,要和levels參數的字元順序保持一致,例如:

通常情況下,因子一般是無序的,這可以通過is.ordered()函數來驗證:

因子的順序,實際上是指因子水平的順序,有序因子的因子水平是有序的。在特殊情況下,有些因子的水平在語義上大於或小於其他水平,R支持按順序排列的因子,使用ordered函數,或通過給factor函數傳入order=TRUE參數,把無序因子轉換為有序的因子。

ordered()函數不能指定特定因子水平的順序,通常情況下,因子中先出現的水平小於後出現的水平。例如,通過ordered函數把sex因子轉換為有序的因子:

通過factor函數創建有序因子,通過levels指定因子的順序。

因子的順序歲耐,其實是因子水平的順序,我們可以通過levels,使現有的因子按照指定的因子水平來排序。

例如,把heights數據框的gender,按照指定的levels,轉換成有序因子:

在數據清理時,可能需要去掉與因子水平對應的數據,通常情況下,需要刪除未使用的因子水平,可以使用droplevels函數,它接受因子或是數據框作為參數。

如果x是數據框,那麼把數據框中未使用的因子刪除。

在數據清理中,有時需要把因子轉換為字元,通常情況下,使用as.character()函數,把因子轉換為字元串:

使用as.numeric()或as.integer()函數可以把因子轉換成對應的整數.

函數 cut() 能夠把數值變數切成不同的塊,然後返回一個因子.

參數注釋:

例如,把身高數據,按照指定的切割點向量分割:

當需要把因子轉換為有序因子時,要注意因子水平的順序.