簡體   English   中英

R將類別數據更改為虛擬變量

[英]R change categorical data to dummy variables

我有一個多變量數據框,並且想要將內部的分類數據轉換為虛擬變量,所以我使用了model.matrix,但效果不佳。 請參考以下示例:

age = c(1:15)                                                          #numeric
sex = c(rep(0,7),rep(1,8)); sex = as.factor(sex)                       #factor
bloodtype = c(rep('A',2),rep('B',8),rep('O',1),rep('AB',4));bloodtype = as.factor(bloodtype)         #factor
bodyweight = c(11:25)                                                  #numeric

wholedata = data.frame(cbind(age,sex,bloodtype,bodyweight))

model.matrix(~.,data=wholedata)[,-1]

我沒有使用model.matrix(~age+sex+bloodtype+bodyweight)[,-1]的原因是,這只是一個玩具示例。 在實際數據中,我可能有數十甚至數百列。 我不認為在此處鍵入所有變量名稱是個好主意。

謝謝

這是cbind多數民眾贊成搞亂的東西了。 它將因子轉換為數值,然后model.matrix無法正確解釋。

如果您只是執行wholedata = data.frame(age,sex,bloodtype,bodyweight) ,應該沒有問題。

cbind返回一個矩陣,並且在矩陣中,所有事物都必須具有相同的類型。 此示例中的結果是將因子轉換為整數(首先是因子的基本表示形式),然后矩陣的類型為整數。

嘗試

wholedata = cbind(age,sex,bloodtype,bodyweight)
is.integer(wholedata) ## TRUE
is.factor(wholedata[,2]) ## FALSE

wholedata = data.frame(age,sex,bloodtype,bodyweight)
is.integer(wholedata) ## FALSE
is.factor(wholedata[,2]) ## TRUE

暫無
暫無

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

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