[英]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.