在R中使用因子时,0在as.numeric函数中是否扮演重要角色

在R中使用因子时,0在as.numeric函数中是否扮演重要角色,r,R,大家好:)例如,我知道以前有人问过这个问题,但我想问一下,使用as.numeric函数,0是否扮演了重要角色。例如,我们有以下简单的代码 x2<-factor(c(2,2,0,2), label=c('Male','Female')) as.numeric(x2) #knonwing that this is not the appropriate command used , as.numeric(levels(x2))[x2] would be more appropriate but

大家好:)例如,我知道以前有人问过这个问题,但我想问一下,使用as.numeric函数,0是否扮演了重要角色。例如,我们有以下简单的代码

x2<-factor(c(2,2,0,2), label=c('Male','Female'))
as.numeric(x2) #knonwing that this is not the appropriate command used , as.numeric(levels(x2))[x2] would be more appropriate but return NAs 
此处是否将0替换为1?而且

unclass(x2) 
似乎也给出了同样的东西:

[1] 2 2 1 2
attr(,"levels")
[1] "Male"   "Female"

这可能很简单,但我正在努力解决这个问题,似乎我做不到。任何帮助都将不胜感激,因为我是R的新手。

0
因子没有特殊意义

正如评论者所指出的,
factor
将输入向量重新编码为整数向量(从
1
开始),并在每个整数(级别)上加上名称标签

在最简单的情况下,
factor(c(2,2,0,2)
,函数获取输入向量的唯一值,对其进行排序,并将其转换为级别的字符向量。即,该因子在内部表示为
c(2,2,1,2)
其中
1
对应于
'0'
2
对应于
'2'

然后,您可以进一步为级别指定一些标签;这些标签通常与级别相同。在您的案例中,
因子(c(2,2,0,2),标签=c('Male','Female'))
,级别仍然按照排序后的唯一向量进行计算(即
c(2,2,1,2)
)但是现在一级有标签
男性
,二级有标签
女性


我们可以决定应该使用哪些级别,如
因子(c(2,2,0,2),级别=c(2,0),标签=c('男性','女性')
。现在我们已经明确了哪个输入值应该有哪个级别和标签。

R
中的因子从1开始编码,而不是从0开始。当你创建
因子时,值0会丢失,除非它是一个级别,但在你的情况下,级别是“男性”和“女性”。那么你实际上如何返回
c(2,2,0,2)
从那里开始?@Moody_Mudskipper
factor
不是可逆变换。考虑:
相同(factor(c(2,2,0,2),label=c('Male','Female')),factor(c(2,2,1,2),label=c('Male','Female'))
我想这就是OP在@orizon上寻找的答案
[1] 2 2 1 2
attr(,"levels")
[1] "Male"   "Female"