我有一个变量,称为gender
二进制分类值"女性"/"男性".我想将其类型更改为整数0/1,以便我可以在回归分析中使用它.即我希望将值"女性"和"男性"映射到1和0.
> str(gender)
gender : Factor w/ 2 levels "female","male": 1 1 1 0 0 0 0 1 1 0 ...
> gender[1]
[1] female
Run Code Online (Sandbox Code Playgroud)
我想转换性别变量类型,以便在查询元素时得到int值1,即
> gender[1]
[1] 1
Run Code Online (Sandbox Code Playgroud)
the*_*ail 14
作为@Dason答案的补充,请注意......
test <- c("male","female")
as.factor(test)
#[1] male female
#Levels: female male
Run Code Online (Sandbox Code Playgroud)
...将female
作为参考组(1)和male
作为比较组(2)返回,
要以另一种方式旋转它,你需要做...
factor(test,levels=c("male","female"))
#[1] male female
#Levels: male female
Run Code Online (Sandbox Code Playgroud)
正如@marius所说,使用contrasts
将告诉你它如何在回归模型中起作用:
contrasts(as.factor(test))
# male
#female 0
#male 1
contrasts(factor(test,levels=c("male","female")))
# female
#male 0
#female 1
Run Code Online (Sandbox Code Playgroud)
如果你真的这样做,你应该完全遵循@Dason的建议.我将假设您正在教授一个课程,并希望演示指标变量(感谢这个问题):
dat <- data.frame(gender=sample(c("male", "female"), 10, replace=TRUE))
model.matrix(~gender, data=dat)
(Intercept) gendermale
1 1 1
2 1 0
3 1 1
4 1 0
5 1 1
6 1 1
7 1 1
8 1 0
9 1 0
10 1 1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$gender
[1] "contr.treatment"
Run Code Online (Sandbox Code Playgroud)
如果您不想要拦截,请model.matrix(~gender -1 , data=dat)
改用.