【发布时间】:2018-10-10 15:34:27
【问题描述】:
问题
我有兴趣将数字二进制信息转换为性别。在此期间,我在 R 中遇到了一些我不理解的行为。
factor(c(0,1,0,1),labels = c("male","female"))
这按预期工作。你会得到以下输出:
[1] male female male female
Levels: male female
但是,当我决定明确并输入以下内容时:
factor(c(0,1,0,1),levels = c("male","female"), labels = c("male","female"))
它将数值数据转换为 NA。这让我感到不安,因为我同时指定了级别和标签。在我看来,我编写的代码是等价的,但是基础 R 对代码的解释不同。
[1] <NA> <NA> <NA> <NA>
Levels: male female
我的问题很简单:为什么?
注意事项
我去了 R 文档中的因子函数。我已经用谷歌搜索了这个问题并在 stackoverflow 上进行了搜索,据我所知,这非常简单,要么没有被问到,要么我以找不到重复的方式问它。感谢你的理解。
【问题讨论】:
-
levels = 0:1。您是说您希望级别为"male"和"female",但您的向量只有零和一,而不是那些值。 -
来自
?factor:“如果在levels[...] 中没有找到x[i]的匹配项,则结果的i-th 元素设置为NA” -
levels 是出现在您实际提供的向量中的值。标签是重新标记它们的东西。你的向量只包含 0 和 1 不是男性和女性,所以结果是 NAs。
-
在链接中,检查@Ben Bolker's answer 中的第一个示例 - 与您的情况相同。
-
@hlyates 不,我认为您可以将您的问题留在这里作为 Ben 回答的路标。你的问题很清楚,很高兴你提供了一个小例子!因素是棘手的!另请参阅Confusion between factor levels and factor labels(尽管您的具体情况未在此处处理)。干杯
标签: r