将因子转换为二进制非对称变量类型

时间:2018-04-26 16:09:13

标签: r binary-data asymmetric r-daisy

我想将R中的一些变量类型从因子转换为二元非对称变量类型。

我使用这种语法成功地将我的一些数据从因子转换为有序因子:mydata[,200] <-as.ordered(mydata[,200]),但是当我尝试类似的东西将它们转换为二进制非对称变量时,我没有成功,并且无法找到任何信息关于如何在线或在我的书中这样做。我需要将它们指定为非对称,因为我将使用菊花函数来查看不同之处。如果有人能告诉我如何将因子转换为二元不对称,我将非常感激。

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

所以,我要做的是将它设置为基本上0 =不重要,1 =重要的地方。从我所读到的(Kaufmann&amp; 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将变量变成不对称的二元变量而不是因子。

2 个答案:

答案 0 :(得分:1)

添加输入和所需输出的示例会很有帮助。我相信你正在寻找一种叫做 col1 row1 a row2 b row3 a 的东西。

      a b
row1  1 0
row2  0 1
row3  1 0

转化为

location = loc.split("/");
path = "results/" + location[location.length - 1].split(".")[0] + "/" + ele.id();
window.location.href = path;

如果您的意思是将因子变量转换为二元不对称变量,请结帐dummies package,这样做会在R中执行。

答案 1 :(得分:0)

一种方法是首先使用as.vector()将您的因素转换为字符向量,其中12被其标签"0"和{{1}替换然后使用"1"将结果转换为数字as.numeric()0

1

虽然可能更加模糊,但你可以用

代替最后一行
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 取得因子并将其转换为等级向量(数字1和2),然后减去1将结果降低到0和1。 在任何一种情况下,您都会得到一个二进制数字向量:

as.numeric()