我试图用[R]做一些非常简单的事情:将data.frame中的值转换为数字,因为我需要测试它们的值而r不会将它们识别为数字.
当我将十进制数转换为数字时,我得到正确的值:
> a <- as.numeric(1.2)
> a
[1] 1.2
但是,当我从data.frame中提取正值然后使用as.numeric时,数字会向上舍入:
> class(slices2drop)
[1] "data.frame"
> slices2drop[2,1]
[1] 1.2
Levels: 1 1.2
> a <- as.numeric(slices2drop[2,1])
> a
[1] 2
以防万一:
> a*100
[1] 200
所以这不是显示问题,数据本身没有得到妥善处理.
此外,当数字为负时,我得到NA:
> slices2drop[2,1] <- -1
> a <- as.numeric(slices2drop[2,1])
> a
[1] NA
对于可能发生的事情有任何想法吗?
Jil*_*ina 10
这个问题与此有关factors.要解决您的问题,首先强制您的因子变量为字符,然后应用as.numeric以获得您想要的.
> x <- factor(c(1, 1.2, 1.3)) # a factor variable
> as.numeric(x)  
[1] 1 2 3
整数数目被返回,每每个级别之一,有3级:1, 1.2和1.3,因此1,2,3被返回.
> as.numeric(as.character(x)) # this is what you're looking for
[1] 1.0 1.2 1.3
实际上as.numeric不是对数字进行舍入,它会在因子变量中为每个级别返回一个唯一的整数.
| 归档时间: | 
 | 
| 查看次数: | 4682 次 | 
| 最近记录: |