我最近在R中遇到了一个新问题,以前从未见过。我有一组数据,其因变量Accuracy仅具有两个值“ 0”和“ 1”。以前,我使用data $ Accuracy = as.numeric(data $ Accuracy)将这两个级别转换为数字,并且可以正常工作。
但是,这一次,我做了同样的事情。 “ 0”变成“ 1”,“ 1”变成“ 2”。这是由于R中所做的新更改吗?如何解决此问题?
谢谢!
答案 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"