2017-10-17 147 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 = "" 

可以更改为变量名称和变量值之间的任意值。