【发布时间】:2019-05-19 03:27:54
【问题描述】:
我找到了类似的条目,但不是我想要的。对于两个分类变量(例如,gender(1,2)),我需要创建一个虚拟变量,0s 是男性,1s 是女性。
这是我的数据的样子和我做了什么。
data <- as.data.frame(as.matrix(c(1,2,2,1,2,1,1,2),8,1))
V1
1 1
2 2
3 2
4 1
5 2
6 1
7 1
8 2
library(dummies)
data <- cbind(data, dummy(data$V1, sep = "_"))
> data
V1 data_1 data_2
1 1 1 0
2 2 0 1
3 2 0 1
4 1 1 0
5 2 0 1
6 1 1 0
7 1 1 0
8 2 0 1
在这段代码中,第二个类别也是(0,1)。另外,有没有办法确定基线(将 0 分配给任何类别)?
我希望它看起来像这样:
> data
V1 V1_dummy
1 1 0
2 2 1
3 2 1
4 1 0
5 2 1
6 1 0
7 1 0
8 2 1
另外,我想将其扩展到三个类别变量,在重新编码后具有两个类别 (n-1)。
提前致谢!
【问题讨论】:
-
我想我不明白您要寻找的最终结果是什么。
data是这样的吗?您正在寻找更好的编程方式吗?如果不是,它应该是什么样子?三个类别会是什么样子? -
抱歉,我现在添加了数据的外观。对于一个二分类变量,我只需要一个代表一个类别的虚拟列。对于三类变量,我需要两个虚拟变量,将第三类作为基线/比较类。
-
不完全确定我理解,你只想要 1,0 编码变量吗?如果是这样,您可以使用
ifelse()按照您描述的方式创建它们。例如,如果男性为 2,女性为 1:data$female <- ifelse(data$V1 == 2, 0, V1)另外,如果您还没有,请查看 R 中的因子。
标签: r categories dummy-variable