Re: [問題] as.factor()和factor()

作者: JX660 (JX)   2015-03-31 22:21:56
※ 引述《LouisPion (府城好男兒)》之銘言:
:
: - 問題: 當你想要問問題時,請使用這個類別
:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: [軟體熟悉度]:
:
: 入門(寫過其他程式,只是對語法不熟悉)
:
: [問題敘述]:
: 請簡略描述你所要做的事情,或是這個程式的目的
: factor()可以將字串或整數向量弄成因子,
: 而as.factor()告訴R把物件視作因子,我不太清楚二者的差別...
: 具體的問題是,什麼時候用factor,什麼時候用as.factor?
: 不好意思,請教版上先進~
: [程式範例]:
: y = c(-1, 1, -1, -1, 1)
: names(y) = seq(1, 5, 1)
: factor(y)
: as.factor(y)
: # 不僅顯示的結果一樣,
: # class(y)、typeof(y)、mode(y)結果也一樣
: [關鍵字]:
:
: 因子、factor、as.factor
:
提供一些小例子 或許有助了解
例如 我手上的觀測值分成五大類如下
>Data$Type
[1] TNBC HER2+ Luminal-A Luminal-B Normal
Levels: HER2+ Luminal-A Luminal-B Normal TNBC
如果我依照Type去畫Boxplot時
R就會按照levels的順序(字母排序) 即
HER2+ Luminal A Luminal B Normal TNBC 由左而右畫Boxplot
但是因為一些臨床上的特性 我需要他的排序是按照
Normal Luminal-A Luminal-B TNBC HER2+ 的類別排列
如果用factor就可以更動level 也可以只取特定的類別的資料
如下
> Data$Type<- factor(Data$Type,
levels=c("Normal","Luminal-A","Luminal-B",
"TNBC","HER2+"))
> Data$Type
[1] TNBC HER2+ Luminal-A Luminal-B Normal
Levels: Normal Luminal-A Luminal-B TNBC HER2+
> Subtype<- factor(Data$Type,
levels=c("Luminal A","Luminal B","TNBC","HER2+"))
> Subtype
[1] TNBC HER2+ Luminal A Luminal B <NA>
Levels: Luminal A Luminal B TNBC HER2+
像這樣 資料本身次序沒有更動
卻可以更改畫圖以及其他指令等等的次序
也可以只畫特定目標
雖然基本卻很好用
as.factor()就不能做到了
只能用as.factor() 而不能用factor() 的情況
好像比較少見 我自己印象中不太有
作者: celestialgod (天)   2015-03-31 22:27:00
不是少見,是沒有,如我推文所說,as.factor是factor的簡化版,認真給推!!
作者: andrew43 (討厭有好心推文後刪文者)   2015-03-31 22:37:00
這很實用。謝謝分享。
作者: Wush978 (拒看低質媒體)   2015-03-31 23:30:00
謝謝分享
作者: summitstudio (第凡斯米德費爾德)   2015-04-01 08:59:00
實用推!

Links booklink

Contact Us: admin [ a t ] ucptt.com