R 在数据帧中将数据转换为二进制

R 在数据帧中将数据转换为二进制,r,binary,R,Binary,此表称为“临时表” No. of times Clear Included Percentage 2 1 1 0.50 4 0 1 0.60 0 0 0 0.20 例如,如果我有此数据集,我希望将“次数”列中0以上的所有数字转换为1,并保持0不变 总的来说,我想

此表称为“临时表”

   No. of times   Clear   Included    Percentage
         2           1        1           0.50
         4           0        1           0.60
         0           0        0           0.20
例如,如果我有此数据集,我希望将“次数”列中0以上的所有数字转换为1,并保持0不变

总的来说,我想要一个像这样的数据集

    No. of times   Clear   Included    Percentage
         1           1        1           0.50
         1           0        1           0.60
         0           0        0           0.20
我怎样才能做到这一点?

这是个好地方

顺便说一句,您可能想使用

names(temp) <- make.names(names(temp))
一个诡计,但是

temp[ , "No. of times"] <- (temp[ , "No. of times"] > 0) + 0

也将执行您想要的操作。我说的是一个技巧,因为括号中的部分temp[,times]>0计算为一个逻辑,然后通过与0相加强制为0或1。

我用ifelse尝试了您的第一个方法,但输出是所有数字的列表。我希望将这些数字合并到上面显示的数据表格式中。这是怎么做到的?你运行了我上面的吗?它被分配回temp,所以使用printtemp。另外,您的对象是data.table还是data.frame?您在代码中调用librarydata.table吗?没问题,很高兴它有帮助。就个人而言,我更喜欢@WilmerEHenaoH的方法。你可能想给它打个勾;我试过你的方法,但结果是所有数字的列表。我想把这些数字合并到上面显示的数据表格式中。这是怎么做到的?听起来你只做了正确的部分。signtemp[,次数]如果您键入printtemp,您将看到整个情况:您好,您正在交替使用术语data.frame、data.table和table,这是一个错误。它们是R对象的不同类,您不应该互换使用它们。
temp[ ,"No. of times"] <- sign(temp[ ,"No. of times"])
temp[ , "No. of times"] <- (temp[ , "No. of times"] > 0) + 0