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

Python019

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里面

上述众数函数修改为下

R语言数据分析利器data.table包—数据框结构处理精讲

2017-06-10

448

R语言数据分析利器data.table包—数据框结构处理精讲

R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快。包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度。因此,在对大数据处理上,使用data.table无疑具有极高的效率。这里我们主要讲的是它对数据框结构的快捷处理。 和data.frame的高度兼容 DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9) 下面DT都是用这个data.table 可见它是属于data.table和data.frame类,并且取列,维数,都可以采用data.frame的方法。 DF = data.frame(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9) DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9) DF DT identical(dim(DT), dim(DF)) # TRUE identical(DF$a, DT$a) # TRUE