嗨大家:)我知道在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的新人。
答案 0 :(得分:1)
0
对factor
没有特殊含义。
正如评论者指出的那样,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'))
。现在我们明确指出哪个输入值应该具有哪个级别和标签。