2017-10-17 143 views
0

我想創建虛擬變量爲R.幾個不同的欄目,我可以用代碼中的變量殘疾做到這一點:功能爲虛擬變量

Disability <- model.matrix(~ Disability - 1, 
        transform(Dev_Mod, Disability = factor(paste(Disability, sep = "_")))) 

因爲我要運行這個各種變量的代碼多次我寧願爲此創建功能,所以我寫了下面的功能:

dummy_vars <- function(Input1){ 
output <- model.matrix(~ Input1 - 1, 
         transform(Dev_Mod, Input1 = factor(paste(Input1, sep = "_")))) 
return(output) 
} 

當我然後運行:

Disability <- dummy_vars("Disability") 

我得到錯誤

錯誤contrasts<-*tmp*,值= contr.funs [1 + ISOF [NN]]):
對比可以只應用於因素有2倍或更多的水平

我已經嘗試了這個多變量,我得到了每個相同的錯誤。

我檢查過,他們肯定有2個或更多的水平,所以我不明白如何修復錯誤。

+0

您必須用公式中的名稱替換Input1。如果你提供一個可重複的例子,我們可以告訴你如何。 – Roland

+0

我以爲這是我在做什麼:殘疾<-dummy_vars(「殘疾」)「殘疾」將是Input1? – MLPNPC

+0

「Disability」只是一個字符串,而不是某個未指定數據框中列的名稱,您的函數對該df一無所知。你可以嘗試使'Input1 = get(「Disability」)'。 (我不確定這是否有效。) –

回答

0

我發現使用該代碼同時創建多個變量假人不同的方式: -

New_Dataset<-dummy.data.frame(dataset, sep="") 

注意數據集中的每個變量將改爲假人,所以最好把你想要的變量分開爲假。

Sep = "" 

可以更改爲變量名稱和變量值之間的任意值。