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')) #一个有序因子

最新文章

  1. js自适应屏幕高度
  2. Python自动化之django的ORM操作——Python源码
  3. css3——新盒子定义box-sizing
  4. Linq常用语法详细
  5. Android MediaPlayer的生命周期
  6. 【原】jquery图片预览
  7. [R]R语言里的异常处理与错误控制
  8. JavaScipt 源码解析 异步
  9. JDK的版本历史
  10. 机器学习(Machine Learning)&amp;深度学习(Deep Learning)资料【转】
  11. UIButton 设置为圆形,并且使用图片(UIImage)当做背景
  12. split方法在低版本IE浏览器上无法解析的问题
  13. Flash Recovery Area 的备份
  14. linux shell 札记
  15. 进程、线程、轻量级进程、协程和go中的Goroutine
  16. mysql sqlserver Oracle字符串连接
  17. OpenStack Dashboard
  18. 关闭Pycharm拼写检查(Mac)
  19. IOS传值之代理传值(一)
  20. Java开发笔记(三十二)字符型与整型相互转化

热门文章

  1. Android Studio NDK 学习之接受Java传入的Int数组
  2. spring 配置多个数据源的文件
  3. 网络通信分享(二):外网ip和内网ip
  4. 客户端请求、服务器响应及其HTTP状态码
  5. Linux内核知识
  6. [Latex]实现行内高亮
  7. Gradle学习系列之七——依赖管理
  8. VC使用libcurl模拟登录CSDN并自动评论资源以获取积分
  9. 使用RazorEngine对ASP.NET MVC的Views进行UnitTest
  10. Dancing Link 详解(转载)