繁体   English   中英

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

[英]R: issue with converting factor to numeric

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

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

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

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

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列具有三个级别的因素: "academic", "general", and "vocation"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM