簡體   English   中英

在R中顯示因子水平和標簽

[英]Displaying of factor levels and labels in R

使用MICE后顯示正確的因子變量分組時出現問題。 我相信這是R的事情,但是為了確定起見,我將它包括在小鼠中。

因此,我運行了鼠標算法,這是我所謂的在鼠標算法中對其進行格式化的方式。 請注意,我希望無葯時為0,有葯時為1,因此在運行之前我將其強制為0和1級的因子

mydat$drug=factor(mydat$drug,levels=c(0,1),labels=c(0,1))

然后,我運行鼠標,並對葯物以及要估算的其他變量進行邏輯回歸(這是默認設置)。

我可以通過以下方式提取其中一種估算的結果:

drug=complete(imp,1)$drug

我們可以查看

> head(drug)
[1] 0 0 1 0 1 1
attr(,"contrasts")
  2
0 0
1 1
Levels: 0 1

因此數據肯定為0,1。

但是,當我對它進行某些操作(例如cbind)時,它會變為1和2

> head(cbind(drug))
 drug
[1,]    1
[2,]    1
[3,]    2
[4,]    1
[5,]    2
[6,]    2

即使我將其強制為數字

> head(as.numeric(drug))
[1] 1 1 2 1 2 2

我想說這與對比有關,但是當我刪除對比時

attr(drug,"contrasts")=NULL

當其他人調用並打印時,它仍然顯示為1和2。

我可以使用I()使其正確打印

> head(I(drug))
[1] 0 0 1 0 1 1
Levels: 0 1

因此,我認為這是一個R問題,但我不知道如何解決。 使用I()是正確的解決方案,還是只是在這里起作用的解決方法? 使輸出顯示為1和2的幕后實際上發生了什么?

謝謝

因素從第一層內部由1表示。

您有兩個選擇:

1)調整基於1的級別索引:

as.numeric(drug) - 1

2)取因子的標簽並轉換為數字:

as.numeric(as.character(drug))

有人會指出您會朝着執行相同操作的更快選項的方向發展:

as.numeric(levels(drug))[drug]

我還將考慮首先使用logical值而不是factor

mydat$drug = as.logical(mydat$drug) 

0和1是您的級別的名稱。 對應名稱的基本整數為1和2可以看到與str

str(drug)
# Factor w/ 2 levels "0","1": 2 2 2 2 2 2 1 1 2 2

將因子強制轉換為數字時,將刪除名稱並獲得整數表示形式。

這就是R對因子進行編碼的方式。 這些因素的基本數字表示形式始終以1開頭。如以下示例所示:

as.numeric(factor(c(0,1)))
as.numeric(factor(c(A,B)))

不確定MICE的工作原理,但是如果要使用系數而不是簡單的0/1數字變量來使用Logistic回歸,則始終可以使用以下內容來破解結果:

as.numeric(as.character(factor(c(0,1)))) 

或您的特定情況

drug <- as.numeric(as.character(drug))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM