使用R语言怎么实现因子型数值转数值型操作

  介绍

本篇文章为大家展示了使用R语言怎么实现因子型数值转数值型操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

因子(因素)转换成数值型(数字)的规则是这样的:

一共有n个数,那么转换后的数字就会在1——n中取值,数字最小的取,一次小的取二,以此类推。

那么如何让因子(因素)类型里的数值转换对应的数值型呢?

,意味着(as.numeric (as.character (factorname)))   ,,,,的意思是(as.numeric(水平(factorname) [factorname]))

以上代码都可以实现将因子(因素)类型里的数值转换对应的数值型,思路都是先转换成字符型然后再转换成数值型。

<>强补充:R_as.numeric()函数在转换小数时返回无意义结果的解决

本文重点解决as.numeric()函数转将因素为数值时得出的无意义结果的解决

假设有数据框aaa

x ,, |,,,, y ,,,, |,,,,,,, value    ------------------------------------------   a1 ,,,,, b2 ,,,,,,, 0.510665432157769   a2 ,,,,, b3 ,,,,,,, 0.887655678543227   . .,,,,,,,,,,,,,,,,,,,,,…

运行as.numeric (aaa[1,3]),返回的结果居然是123 ?当然,这只是个栗子,为了表达问题所在。真正运行时不一定得到的结果是123

<强>在R帮助中找到如下参考

警告如果x是一个因素,。数字将返回底层数字(整数)表示,这通常是没有意义的,因为它可能不对应因子的水平,看到“警告# 39;部分因子(和下面第二个例子)。

看到毫无意义的这个词了吗,意思是如果使用。数字转换一个因子,则通常会返回一个无意义的结果,是因子的一个“整型数字象征”,因为R为了节省内存提高速度,因子类型底层是用C语言中的int实现的,因子的值与该整型数值的“转换表格”存储在内存中。

那么我们如何解决呢?

嵌套使用

as.numeric (as.character (aaa [1,3]))

这样返回的就是正常应转化的数的值,而不是一个无意义的结果如一百二十三。

但上面的方法有一个问题,在小数点后位数太大时输出结果会四舍五入。

对于这个,我们可以使用print()函数中的参数数字,打印(as.numeric (as.character (aaa[1,3])),数字=16),输出的就是不带四舍五入的完整值

理论上格式(xx,位数=16)也可以保证长度,但我没在这种情况下试。

上述内容就是使用R语言怎么实现因子型数值转数值型操作,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

使用R语言怎么实现因子型数值转数值型操作