30

可能重复:
R - 如何在不丢失信息的情况下将因子转换为 R 中的整数\数字

以下关于 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() 读取为一个因素)

谢谢!!!!

*****更新:想通了******

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

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

4

1 回答 1

29

首先,因子由指标和水平组成。当您与因素作斗争时,这一事实非常重要。

例如,

> 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 个元素。
索引2, 1, 2, 3按该顺序排列。级别与每个索引
相关 联:1 -> b、2 -> c、3 -> d。

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

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

于 2011-09-30T14:55:55.230 回答