R语言_table()函数与因子变量

Python045

R语言_table()函数与因子变量,第1张

今天在写一个求众数的函数,思路很简单:统计unique数值,并计算其频数,取最大值就是,函数如下:

众数值没有问题,但是此处出现了因子水平levels,函数最后一步提取的应该是[1,1]位置的数值才对。怎么出现因子水平呢???

首先检验下众数

问题出现在table函数上,table函数作用就是统计一组向量中unique元素的数量,具体参数请参照R帮助文件。R中这样解释table函数 , “ table uses the cross-classifying factors to build a contingency table of the counts at each combination of factor levels ”。 因此,table()返回的结果是带有因子水平的。

这时候,当然想把因子变量转换成数值变量, as.numeric() , 这时候神奇的事情发生了:

此处呼叫万能的网友,知乎博主[醉一心],CSDN博主[YaoRaoLov]给出了答案。参照以下博文:

https://zhuanlan.zhihu.com/p/147799787

https://ask.csdn.net/questions/707550?sort=comments_count

再来看下table()返回的数据框e

因子型变量在unclass()函数的作用下,显示出真面目:原来就是 一个个数值型变量

这也就是为什么对其进行数值型转化时会得到1,2,3,4等一系列数值的原因。

它的 真实值存储在Levels里面

上述众数函数修改为下

同学你好,

      很高兴能够与你一起学习,共同进步!

attach()可将数据框添加到R的搜索路径中:

        summary(mtcars$mpg)

等效于

      attach(mtcars)

        summary(mpg)

detach()表示将数据框从搜索路径中移除。

同时,两者最好在分析一个单独的数据框,并且不大可能有多个同名对象时使用。

      希望可以帮助到你,天天心晴!

R语言中取整运算主要包括以下五种:floor():向下取整;ceiling(): 向上取整;round(): 四舍五入取整;turnc(): 向0取整;signif(): 保留给定位数的精度。

floor返回对应数字的'地板'值,即不大于该数字的最大值;

ceiling返回对应数字的'天花板'值,就是不小于该数字的最小整数;

round是R里的'四舍五入'函数,具体的规则采用banker's rounding,即四舍六入五留双规则(wiki)。round的原型是round(x, digits = 0), digits设定小数点位置,默认为零即小数点后零位(取整)。

trun的特性是'向零截取', 也就是说对于一个数字a,它将数轴分成两侧,trunc(a)将返回数轴上包含数字0的那一侧离a最近的那个整数。

signif是保留有效数字的函数。常用于科学计数。