0

我想将一些变量类型R从因子转换为二进制不对称变量类型。

我使用以下语法成功地将我的一些数据从因子转换为有序因子:mydata[,200] <-as.ordered(mydata[,200]),但是当我尝试使用类似的方法将它们转换为二进制不对称变量时,我没有成功,并且无法找到有关如何在线或在线执行此操作的任何信息我有的书。我需要将它们指定为不对称,因为我将使用 daisy 函数来查看差异。如果有人能告诉我如何从因子转换为二进制不对称,我将非常感激。

编辑:回答关于不对称与对称变量的问题:二元对称和二元不对称之间的主要区别在于对称变量,两者都具有相同的权重(那个人是男性还是女性),而在不对称变量中一个更重要比另一个。人们是否有共同的特征并不重要只有他们共同特征才重要。例如,色盲的人有一些共同点,但非色盲的人则没有。

所以,我要做的是将它设置为基本上 0 = 不重要,1 = 重要。根据我所读到的内容(Kaufmann & Rousseeuw 1990),重要的是要区分这些在做不同时是不对称的。

structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, NA, 1L, NA, 
1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")

进一步编辑:我不相信我需要一个虚拟变量,因为它在技术上已经是一个二进制(一切都是 1、0 或 NA) - 我只是不知道如何让 R 将变量更改为非对称二进制变量而不是因素。

4

2 回答 2

1

添加输入和所需输出的示例将很有帮助。我相信你正在寻找一个叫做dummy variables.

    col1
row1  a   
row2  b
row3  a 

转化成

      a b
row1  1 0
row2  0 1
row3  1 0

如果这就是您将因子变量转换为二进制非对称变量的意思,请查看在 R 中执行此操作的dummies 包。

于 2018-04-26T17:46:39.567 回答
0

一种方法是首先使用as.vector()将您的因子转换为具有级别并由其标签替换的字符向量,1然后2使用"0""1"结果as.numeric()转换为数字01

v <- structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, NA, 1L, NA, 
                 1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
                 1L, 1L, 1L, 1L, 1L), .Label = c("0", "1"), class = "factor")

v <- as.numeric(as.vector(v))

等效地,尽管可能更晦涩难懂,您可以将最后一行替换为

v <- as.numeric(v) - 1

获取因子并将其as.numeric()转换为级别向量(即数字 1 和 2),然后减去 1 将结果降至 0 和 1。在任何一种情况下,您都会得到一个二进制数字向量:

> v
 [1]  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  1  0
[27] NA  0 NA  0  0  0 NA NA  0  0  0 NA  0  0  0  0  0  0  0  0  0  0  0  0
于 2018-04-27T01:05:44.147 回答