R语言中的因子就是factor,用来表示分类变量(categorical variables),这类变量不能用来计算而只能用来分类或者计数。

可以排序的因子称为有序因子(ordered factor)。

factor()

用来生成因子数据对象,语法是:

factor(data, levels, labels, ...)

其中data是数据,levels是因子的级别向量,labels是因子的标签向量。

以我的10个月的fitbit数据为例,创建一个因子

fitbit <- read.csv("fitbit.csv")

fitbit$date <- as.Date(fitbit$date)

month <- factor(format(fitbit$date,"%m"))  #建立因子

这样就按月份建立一个因子,以后就可以按月份进行分类统计了。

str(month) #看看因子的结构信息,可以看到有10个级别Levels,代表着10个月份。

Factor w/ 10 levels "01","02","03",..: 1 1 1 1 1 1 1 1 1 1 ...

length(month)  #向量的长度并不是10,而是fitbit中的数据行数。

[1] 304

summary(month)  #可以看看汇总信息,这里列出每个分类中的数据个数

01 02 03 04 05 06 07 08 09 10

31 28 31 30 31 30 31 31 30 31

ordered()

也可以建立有序的因子:

ordered_month <- ordered(format(fitbit$date,"%m"))

str(ordered_month)

Ord.factor w/ 10 levels "01"<"02"<"03"<..: 1 1 1 1 1 1 1 1 1 1 ...

可以看出各个级别有顺序大小关系。

tapply()

统计每个月的步数

tapply(fitbit$step, month, mean)

01        02        03        04        05        06        07        08        09        10

11263.032 10200.250 12710.065  6389.233  7228.774 10755.800 11425.903 11147.129 11210.767  9706.097

画出图来看看,4、5月份有缺失数据,所以平均数偏低

plot(tapply(fitbit$step, month, mean), type="b")

score1 <- ordered(score, levels = c('C', 'B', 'A')); score1

3、用cut()函数将一般的数据转换成因子或有序因子。

例1:exam <- c(98, 97, 52, 88, 85, 75, 97, 92, 77, 74, 70, 63, 97, 71, 98,

65, 79, 74, 58, 59, 60, 63, 87, 82, 95, 75, 79, 96, 50, 88)

exam1 <- cut(exam, breaks = 3) #切分成3组

exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己设置的组

attr(exam1, 'levels'); attr(exam2, 'levels'); attr(exam2, 'class')

ordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一个有序因子

R语言学习笔记:因子的更多相关文章

  1. R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...

  2. R语言学习笔记(二)

    今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...

  3. R语言学习笔记:小试R环境

    买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...

  4. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

  5. R语言学习笔记:基础知识

    1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...

  6. R语言学习笔记—K近邻算法

    K近邻算法(KNN)是指一个样本如果在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.即每个样本都可以用它最接近的k个邻居来代表.KNN算法适 ...

  7. R语言学习笔记:使用reshape2包实现整合与重构

    R语言中提供了许多用来整合和重塑数据的强大方法. 整合 aggregate 重塑 reshape 在整合数据时,往往将多组观测值替换为根据这些观测计算的描述统计量. 在重塑数据时,则会通过修改数据的结 ...

  8. R语言学习笔记—决策树分类

    一.简介 决策树分类算法(decision tree)通过树状结构对具有某特征属性的样本进行分类.其典型算法包括ID3算法.C4.5算法.C5.0算法.CART算法等.每一个决策树包括根节点(root ...

  9. R语言学习笔记—朴素贝叶斯分类

    朴素贝叶斯分类(naive bayesian,nb)源于贝叶斯理论,其基本思想:假设样本属性之间相互独立,对于给定的待分类项,求解在此项出现的情况下其他各个类别出现的概率,哪个最大,就认为待分类项属于 ...

随机推荐

  1. 清除SQL数据库的日志

    ALTER DATABASE [Fuliu_Test] SET RECOVERY SIMPLEALTER DATABASE [Fuliu_Test] SET RECOVERY FULLDBCC SHR ...

  2. unity4.6 failed to update unity web player

    unity4.6 failed to update unity web player 新升级的 4.6.2P2 版本修复了IOS很多的bug. 但突然发现导出的Web版本反而不能工作了. “faile ...

  3. NGUI Atlas

    打开 Atlas Maker:NGUI -> Open -> Atlas Maker 新建一个 "Icon Atlas" 生成3个东西:

  4. iOS_拨打电话/发送短信

    GitHub address : https://github.com/mancongiOS/makeACallAndSendMessage.git 功能一: 拨打电话 1.可以有提示框.提示该电话号 ...

  5. .Net魔法堂:史上最全的ActiveX开发教程——自动更新、卸载篇

    一.前言 B/S模式的特点之一,客户端版本升级相对简单.快捷,适合产品的快速迭代.而ActiveX组件的自动更新同样也继承了这一优点.下面我们一起来了解吧! 二.二话不说更新ActiveX 1. 设置 ...

  6. Twitter算法面试题详解(Java实现)

    最近在网上看到一道Twitter的算法面试题,网上已经有人给出了答案,不过可能有些人没太看明白(我也未验证是否正确),现在给出一个比较好理解的答案.先看一下题目. 图1 先看看图图1.可以将方块看做砖 ...

  7. Python+Selenium进行UI自动化测试项目中,常用的小技巧4:日志打印,longging模块(控制台和文件同时输出)

    在前段时间,为了给项目中加入日志功能,就想到了 logging 模块,百度logging一大推,都是各种复制的,并没有找到自己想要的结果:我的目的很简单,就是:在把日志写入文件的同时在控制台输出,更加 ...

  8. linq之into子句

    在Linq表达式中,into子句可以创建一个临时标识符,使用该标识符可以存储group.join或select子句的结果. 下面实例中我们用GroupOtherQuery方法来演示group子句对结果 ...

  9. jQuery的事件click

    不管是在asp.net 还是asp.net mvc中,对象的click事件是我们最常用到的一个事件,说明用户click点击一下mouse的左键,铵下并放开的事件. 今天已经是十一月份了,学习又是新的开 ...

  10. HTML5标准简介

    最近前端的群都蛮热闹的,但我发现多数讨论的是javascript和css相关的问题,仿佛大家在努力创建各种交互.样式的时候,忘却了这一切的基础 – HTML. 其实我很喜欢HTML,觉得这个语言远比X ...