您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

R语言中的因子型变量

来源:网络整理 浏览:311次 时间:2022-05-17

      因子与因子水平

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]  15   1  63  19 122> class(calls_num)[1] "numeric"> f_calls_num<-factor(calls_num)> f_calls_num[1] 15  1   63  19  122Levels: 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 eLevels: 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、因子型变量为离散变量,可通过定义因子型变量区分离散变量。


推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com