首页 文章

将因子转换为数字而不丢失信息R(as.numeric()似乎不起作用)[重复]

提问于
浏览
27

可能重复:R - 如何在R中将因子转换为整数\ numeric而不丢失信息

有关as.numeric()函数的以下事实已引起我的注意

> blah<-c("4","8","10","15")
> blah
[1] "4"  "8"  "10" "15"
> blah.new<-as.factor(blah)
> blah.new
[1] 4  8  10 15
Levels: 10 15 4 8
> blah.new1<-as.numeric(blah.new)
> blah.new1
[1] 3 4 1 2

当我使用as.numeric()将具有4,8,10和15级别的因子转换为定量变量时,每个数字都会转换为排名,原始值将丢失 .

如何获取级别为10,15,4和8的向量'blah.new',并将其转换为数值10,15,4和8?

(这个问题的出现是因为read.table()读取定量变量的数据集是一个因素)

谢谢!!!!

*****更新:FIGURED IT OUT ******

blah.new1<-as.numeric(as.character(blah.new))

但是,我想知道as.numeric()的文档在哪里说这个函数将参数转换为排名列表?

1 回答

  • 26

    首先,因素包括指数和水平 . 当你在与因素斗争时,这个事实非常重要 .

    例如,

    > z <- factor(letters[c(3, 2, 3, 4)])
    
    # human-friendly display, but internal structure is invisible
    > z
    [1] c b c d
    Levels: b c d
    
    # internal structure of factor
    > unclass(z)
    [1] 2 1 2 3
    attr(,"levels")
    [1] "b" "c" "d"
    

    这里, z 有4个元素 .
    index 按此顺序是 2, 1, 2, 3 .
    level 与每个 index 关联:1 - > b,2 - > c,3 - > d .

    然后, as.numeric 将因子的 index 部分转换为数字 .
    as.character 处理索引和级别,并生成由 level 表示的字符向量 .

    ?as.numeric 表示因子由默认方法处理 .

相关问题