有关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
Run Code Online (Sandbox Code Playgroud)
当我使用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))
Run Code Online (Sandbox Code Playgroud)
但是,我想知道as.numeric()的文档在哪里说这个函数将参数转换为排名列表?
koh*_*ske 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"
Run Code Online (Sandbox Code Playgroud)
这里z有4个要素.
该指数是2, 1, 2, 3按照这个顺序.
该级别与每个索引相关联:1 - > b,2 - > c,3 - > d.
然后,as.numeric将因子的索引部分简单地转换为数字.
as.character处理索引和级别,并生成由其级别表示的字符向量.
?as.numeric说因子是由默认方法处理的.