2016-03-07 57 views
-2

我的數據由有關智能手機的數據組成。 要做random forest,我需要將我的品牌品牌轉換爲很多假人。R中的假設因素

I tried this code 

m <- model.matrix(~ Brand, data = data_price) 

Intercept BrandApple BrandAcer BrandAlcatel ... 
1   0   0   1 
1   1   0   0 
... 

的問題是,原始數據有2039行,而這個輸出只有2038 現在我想假人添加到我的data_price,但這並不作品。

我該如何製作一個虛擬模型並將其添加到我的數據集中?

+0

向我們展示您的努力,原始數據以及它應該如何顯示。 – Paul

+0

你可以嘗試'psych'包中的'dummy.code()'函數 – mtoto

回答

1

您的方法使用model.matrix應該可以正常工作,我們只需要弄清楚發生了什麼事情,缺少的行。我想問題是你的因素中缺少值。考慮以下幾點:

dat <- factor(mtcars$cyl) 
dat2 <- dat 
dat2[1] <- NA 

在此,我已採取的一個因素,在數據集中mtcars氣缸即數,以及用於比較的我已經創建其中I已更換了一個值與NA第二因子。讓我們來看看行數model.matrix將在每種情況下吐了出來:

nrow(model.matrix(~dat)) 
[1] 32 
nrow(model.matrix(~dat2)) 
[1] 31 

你看到的是,在因子變量有缺失值的情況下,model.matrix輸出有一排少,這也許是不奇怪。

您可以爲缺失的值創建自己的因子級別,或者如果您的應用程序看起來適合,可以安全地從原始數據集中刪除缺少值的行。 model.matrix的輸出包含行名稱,如果要沿着該路線行進,您可以使用這些行名稱將merge數據回送到原始數據幀。