2017-05-30 47 views
0

你好我創建一個矩陣的功能,這將是n-1個後數據的最低數量列。但是我想刪除n列中含量最少的分類變量。怎麼做。要刪除具有分手分類值

BreakCad= function(dataf,catog) # takes the parent data frame and the variable containing categorical variable. 

{ 

    result<- model.matrix(~ factor(catog)-1) ##--Takes input a categorical variable breaks to n-1 categorical variable with value 0 or 1--# 

result<-result[,-1] # its removing col in position -1 , I want to remove the #knonw which has lowest quantity 

result= as.data.frame(result) 

result=cbind(dataf,result) 

    return(result) 

} 

y= data.frame(Decision=sample(c("yes","no","cant decide"),40,replace=TRUE),point1=sample(1:10, 40, replace=TRUE)) 

fd=BreakCad(y,y$Decision) 

min(table(y$Decision)) 

回答

0

您可以使用relevel功能把所選級別的catog第一。玩具例子:

(catog<-factor(rep(letters[1:4], 4:1))) 
[1] a a a a b b b c c d 
Levels: a b c d 

查找水平最低計數:

(wmin<-which.min(table(catog))) 
d 
4 

設置爲第一級:

(catog<-relevel(catog, wmin)) 
[1] a a a a b b b c c d 
Levels: d a b c 

那麼你的代碼應該工作。

result<-model.matrix(~factor(catog)-1) 
result<-result[,-1]