R:将因子转换为数字的问题

时间:2015-07-24 14:29:04

标签: r matrix numeric type-conversion

我正在使用从本网站获得的数据集:http://www.ats.ucla.edu/stat/r/dae/mlogit.htm

我想使用一个需要矩阵为数字的包,所以我使用data.matrix将数据帧转换为数字矩阵。

这是我的第一个问题:有没有办法告诉哪个数字对应哪个因素?通过查看本网站提供的数据集中的数据,这很容易,但是当我们有数百个因素时,我们将如何实现这一目标?

我的第二个问题涉及以下代码:

replace

我在另一篇文章中看到,这是将因子转换为数值的最有效方法。但是,在数据集的其中一列上使用此命令可以得到以下结果:

as.numeric(levels(f))[f]

另一方面,如果我只使用以下代码:

as.numeric(levels(ml$prog))[ml$prog]
  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [64] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[127] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[190] NA NA NA NA NA NA NA NA NA NA NA
Warning message:
NAs introduced by coercion 

似乎返回了我预期的结果。

为了提供更多背景信息,专栏as.numeric(ml$prog) [1] 3 1 3 3 3 1 3 3 3 3 3 2 3 3 3 1 1 3 2 3 1 3 3 3 2 2 1 1 2 2 1 3 2 2 3 3 3 2 1 2 1 2 2 3 2 3 3 1 3 2 2 3 1 2 2 1 2 1 3 1 3 2 2 3 3 3 1 2 2 1 2 2 2 1 3 1 3 1 1 2 3 2 2 1 3 2 1 1 1 3 3 1 3 2 3 [96] 1 2 3 3 1 2 3 3 3 1 2 1 1 2 2 2 2 2 2 2 3 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 2 2 2 2 1 1 2 1 1 1 2 2 2 2 2 3 1 2 2 2 2 2 1 1 2 2 2 3 1 2 2 1 1 2 2 3 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 [191] 2 2 2 2 2 2 3 2 2 2 有三个级别的因素:ml$prog

1 个答案:

答案 0 :(得分:2)

我认为你的混音是由于编码的矢量不是数字而是字符。如果您需要一个号码,那么您的as.numeric(ml$prog)就是正确答案。如果要访问编码的向量,请as.character(levels(ml$prog))[ml$prog]