R语言中的因子型变量

作者: 三猫后端 | 来源:发表于2019-05-09 21:25 被阅读0次

原文链接:R语言中的因子型变量

微信公众号:机器学习养成记    搜索添加微信公众号:chenchenwings


因子与因子水平

R语言的数据类型中,因子(Factor)型比较特殊,也让许多初学者感到难以理解。其实就像整型用来存储整数、字符型用来存储字符或字符串类似,因子型是用来存储类别的数据类型,因子型变量因此是离散变量。

eg:五个用户月均通话次数分别是(15, 1, 63, 19, 122),存储在变量calls_num中。此时calls_num是一个数值型变量,有五个值,且理论上每个值的取值范围是0到+∞。如果想将这个变量进行离散化,根据[0,10] , (10,100] ,(100,+∞]将次数划分为低频、中频、高频三个类别,这时便可建立一个因子型变量f_calls_num记录每个用户月均通话次数所在类别,即(中频,低频,中频,中频,高频)。

因子水平(Level)表示因子的值域,因子的每个元素只能取因子水平中的值或缺失。上例中,因子水平就是(低频,中频,高频)。

R语言实现

创建因子

R语言中,通过factor()函数建立因子型变量。

> calls_num<-c(15,1,63,19,122)

> calls_num[1]1516319122

>class(calls_num)

[1] "numeric"

>f_calls_num<-factor(calls_num)

>f_calls_num

[1] 15  1  63  19  122

Levels:1 15 19 63 122

>class(f_calls_num)[1] "factor"

其中,class()函数用来检测变量类别。可以看出,calls_num为数字型,经过转化后,f_calls_num变为因子型。Levels表示因子水平。这里还需要注意的一点是,R默认创建数据框时,将文本类型存储为因子型。如果想取消此操作,可在data.frame函数或read.csv函数中设置stringAsFactors=F参数。

因子水平

可通过levels()函数输出因子水平。

> levels(f_calls_num)

[1]"1""15""19""63""122"

>class(levels(f_calls_num))

[1]"character"

通过上面的例子可以发现,levels的元素都是character类型,可以通过as.character()函数将因子型转化为字符型。

通过设置factor函数中的参数,可以修改因子水平。

> f_calls_num<-factor(calls_num,labels=c('a','b','c','d','e'),ordered=TRUE)

> f_calls_num

[1] b a d c e

Levels: a < b < c < d < e

#levels(f_calls_num)<-c('a','b','c','d','e')

#f_calls_num<-ordered(f_calls_num)

labels表示对因子水平重命名,ordered=TRUE表示建立有序分类。可以用注释部分代码实现相同的效果。

删除多余因子水平

在实际应用中,会出现实际取值范围小于因子水平。为了满足特定的运算或提升存储效率,可以使用droplevels()函数删除多余因子水平。

> levels(f_calls_num)<-c('a','b','c','d','e','f')

> f_calls_num

[1] b a d c eLevels: a b c d e f

> droplevels(f_calls_num)

[1] b a d c eLevels: a b c d e

连续数据分组

我们前面讲的例子中,要根据次数大小对数据进行离散化分组,此时可通过cut()函数实现。

> f_calls_num2<cut(calls_num, breaks = c(0,10,100,Inf),labels = c('dipin','zhongpin','gaopin'),include.lowest = T,ordered_result = T)

> f_calls_num2

[1] zhongpin dipin    zhongpin zhongpin gaopin

Levels: dipin< zhongpin < gaopin

优点

1、节约存储空间。随硬件能力的提升,人们现在不太关注用因子型来提高存储效率,但R保留了这个方式。

2、因子型变量为离散变量,可通过定义因子型变量区分离散变量。


推荐文章

· Bagging算法(R语言)

·静态爬虫与地址经纬度转换(python)

·特征工程(一):前向逐步回归(R语言)

·聚类(三):KNN算法(R语言)

·小案例(六):预测小偷行为(python)

·ggplot2:正负区分条形图及美化

扫描二维码,关注我们。

如需转载,请在开篇显著位置注明作者和出处,并在文末放置机器学习养成记二维码和添加原文链接。

快来关注我们吧!

相关文章

  • R语言因子2021.2.1

    因子 在R语言中,变量可以分为名义型变量,有序型变量和连续型变量。其中数值型数据更容易是连续型变量,字符串型数据更...

  • R语言中的因子型变量

    原文链接:R语言中的因子型变量 微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings 因子...

  • R 语言-因子

    1、变量分类: (1)连续型变量(2)名义型变量(3)有序型变量在 R 中,名义型变量和有序型变量称为因子(fac...

  • R语言·基本统计分析(1)

    sapply( )函数 r语言中summary()函数提供了最小值、最大值、四分位数和数值型变量的均值,以及因子向...

  • R数据结构之因子

    定义:类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。 函数factor()以一个整数向...

  • 理论:因子分析原理剖析

    因子分析概述: 因子分析分为Q型和R型,我们对R型进行如下研究: 一.因子分析步骤: 1.确认是是否适合做因子分析...

  • R语言里面的因子

    R语言中的因子确实不好理解,很多人都这么觉得。在R语言中,因子(factor)表示的是一个符号、一个编号或者一个等...

  • R语言对应分析

    @[toc] 对应分析基本概念 Q型分析:样本之间的关系(聚类算法等)R型分析:变量之间的关系(主成分分析、因子分...

  • R for data Science (11章)

    使用forcats处理因子 1 简介因子在R中用于处理分类变量,分类变量是在固定的已知集合中取值的变量。 准备工作...

  • R 学习笔记(5) -- 因子和表

    因子 因子 (factor) 是 R 语言中许多强大运算的基础,包括许多针对表格数据的运算。因子的设计思想来源于统...

网友评论

    本文标题:R语言中的因子型变量

    本文链接:https://www.haomeiwen.com/subject/kltnoqtx.html