在R中使用因子时,0在as.numeric函数中是否起任何重要作用

时间:2017-09-22 07:51:57

标签: r

嗨大家:)我知道在here之前已经问过这个问题但是我想问一下使用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 

返回

[1] 2 2 1 2

0在这里被替换为1吗?而且,

unclass(x2) 

似乎也给出了同样的东西:

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

这可能很简单,但我想弄明白,似乎我不能。任何帮助都会受到高度赞赏,因为我是R的新人。

1 个答案:

答案 0 :(得分:1)

0factor没有特殊含义。

正如评论者指出的那样,factor将输入向量重新编码为整数向量(以1开头),并将名称标签贴在每个整数(级别)上。

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

然后你进一步给出一些标签;这些通常与水平相同。在您的情况factor(c(2,2,0,2), labels=c('Male','Female'))中,仍然会对已排序的唯一向量(即c(2,2,1,2))评估级别,但现在级别为第一个级别的标签Male 第二Female

我们可以决定应该使用哪个级别,如factor(c(2,2,0,2), levels=c(2,0), labels=c('Male','Female'))。现在我们明确指出哪个输入值应该具有哪个级别和标签。