R中具有二进制数据的数字函数

时间:2020-05-13 00:32:02

标签: r

我最近在R中遇到了一个新问题,以前从未见过。我有一组数据,其因变量Accuracy仅具有两个值“ 0”和“ 1”。以前,我使用data $ Accuracy = as.numeric(data $ Accuracy)将这两个级别转换为数字,并且可以正常工作。

但是,这一次,我做了同样的事情。 “ 0”变成“ 1”,“ 1”变成“ 2”。这是由于R中所做的新更改吗?如何解决此问题?

谢谢!

3 个答案:

答案 0 :(得分:2)

可能是列是factor类,并且当我们使用as.numeric时,我们获得了整数存储模式值(在R中,索引从1开始)。在这种情况下,我们可以先转换为character,然后再转换为numeric

data$Accuracy <- as.numeric(as.character(data$Accuracy))

答案 1 :(得分:1)

如果这是手册推荐的因素

as.numeric(levels(data$Accuracy))[data$Accuracy]

将其转换为近似其原始数值。

答案 2 :(得分:0)

我想数据框定义或从文件读取可能存在问题。如果原始数据中只有0和1 data $ Accuracy应该是类整数。但是仅一行中没有任何数字字符都将创建一个因子列。例如:

> zz<-data.frame(c(0, 0, 1, 1))
> zz
  c.0..0..1..1.
1             0
2             0
3             1
4             1
> zz<-data.frame(c(0, 0, 1, 1, "")) # an empty space
> zz
  c.0..0..1..1.....
1                 0
2                 0
3                 1
4                 1
5                  
> class(zz$c.0..0..1..1.....)
[1] "factor"
> zz<-data.frame(c(0, 0, 1, 1, NA)) # empty numeric data
> zz
  c.0..0..1..1..NA.
1                 0
2                 0
3                 1
4                 1
5                NA
> class(zz$c.0..0..1..1..NA.)
[1] "numeric"