还在被R语言中的因子 factor毒打吗?
视频教程在B站或者微信里搜这个标题即可。
一、R语言为什么要设计出因子factor?
Python中没有因子的概念,为什么R中会有呢?
首先,我们知道,R语言最初是被统计学家设计出来教授统计学课程的。
这跟因子有什么关系?
当然有关系啦,因子作为R语言中内置的原生数据结构对象,它的出现就是来解决分类变量的分组、计数问题。
毕竟,统计学家不会吃饱了没事干搞个没作用的东西出来恶心人,对吧。。。
factor在R中的地位非常重要,如果你学不好factor,意味着你也学不好R。
二、factor是什么?
我的理解:factor在R语言中被称为因子,是R语言中一类特殊的类别型向量,用来给其中的类别元素进行分组、计数。
它是R语言中专门用来统计 【类别型】或者【可枚举型】 的数据。
适用于:【类别数量】或者【可枚举数量】 相对较少的向量。
类别数量=length(unique(向量))问题1:一个14亿人的身份证号,组成的向量,如果把它变成因子,有意义吗?
没有,因为14亿人的身份证号都是不相同的,因子对这个向量作分组计数的结果,
就是每个人的身份证号作为一组,计数的结果也就是一个。问题2:一个超市的售货记录,1亿条商品出售记录的向量,商品类别数量为1W,把他变成因子,有意义吗
有,通过把这个向量变成因子,我们可以快速对这1W种商品进行分组、计数。
可以很快看出,哪种商品卖得好,这样因子的作用:分组、计数的效果就出来了。
class<-c("C","A","B","A")#字符串型向量 类别型
age<-c(1,5,4,3) #数值型向量 可枚举型
f.class<-factor(class) #因子,可理解为类别型向量。
f.class
三、factor函数的格式
主要的参数格式:
factor(x=character(), levels, labels = levels,ordered = is.ordered(x))
x:为向量 或者为因子,默认会先被转成字符串型向量。
levels:unique(x)的结果,或者为unique(x)的子集。
labels:用于给levels中的结果,重命名。
ordered:值为FALSE 或者TRUE,将levels按字母顺序进行排序。未排序的因子称为普通因子,排序的因子称为有序因子。
四、factor函数的常用操作
4.0 数据准备
#随机采样生成一组字符串型向量
sex<-sample(c("男","女","娘炮"),size=1000,prob=c(0.45,0.45,0.02),replace=TRUE)
age<-sample(0:150,size=1000,replace=TRUE) #应该没人能活过150岁吧?
logicals<-sample(c(TRUE,FALSE),size=1000,replace=TRUE)