数学建模社区-数学中国

标题: R语言入门基础之因子和有序因子 [打印本页]

作者: 数模天下    时间: 2012-12-24 14:02
标题: R语言入门基础之因子和有序因子

因子(factor)和有序因子(ordered factor)

因子用来存储类别变量(categorical variables)和有序变量,这类变量不能用来计算而只能用来分类或者计数。( k( ?' h8 ?* w
因子表示分类变量,有序因子表示有序变量。. j; y4 i& k7 R7 v8 ^! D5 _
生成因子数据对象的函数是factor(),语法是factor(data, levels, labels, ...),其中data是数据,levels是因子水平向量,labels是因子的# L0 z# D2 \; c2 N9 ^  `

( V$ W) p2 H: |& T: m/ M标签向量。( X" k4 b! J& W! n  q1 A
1、创建一个因子。
% P: k& q8 ^$ l# a   例1:colour <- c('G', 'G', 'R', 'Y', 'G', 'Y', 'Y', 'R', 'Y')
" ]. a) K; u) ^/ q5 _' `col <- factor(colour)
6 Y' m" |5 _8 Hcol1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow')) #labels的内容替换colour相应位置对应levels的内容
7 f% c+ {6 r' l' k! ]: B& Fcol2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3'))
- `1 ^! p7 f' rcol_vec <- as.vector(col2) #转换成字符向量" }: c6 @4 g; A, m1 i
col_num <- as.numeric(col2) #转换成数字向量
$ D" A9 q8 v3 @8 I. l; G0 c+ w8 Lcol3 <- factor(colour, levels = c('G', 'R')): T) N$ M- a- [7 F+ v8 T

! w  x, K  z& h  H7 O$ R2、创建一个有序因子。
. ], M% a% @/ D3 T    例1:score <- c('A', 'B', 'A', 'C', 'B')' ?% r: m4 m9 C# W/ K+ f
score1 <- ordered(score, levels = c('C', 'B', 'A')); score1# ?0 L: R1 c1 `4 n6 a- J

% W' g1 N* m; \3、用cut()函数将一般的数据转换成因子或有序因子。
4 F$ a' s' G: o9 p$ \; }9 B0 v    例1:exam <- c(98, 97, 52, 88, 85, 75, 97, 92, 77, 74, 70, 63, 97, 71, 98,
7 ]' p" X. d5 U* a: X  65, 79, 74, 58, 59, 60, 63, 87, 82, 95, 75, 79, 96, 50, 88)2 t. g( _' A7 a" ?4 g  f/ [
exam1 <- cut(exam, breaks = 3) #切分成3组
. f3 @/ u4 b+ {% b0 _exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己设置的组  e3 N! [$ W7 K: t
attr(exam1, 'levels'); attr(exam2, 'levels'); attr(exam2, 'class')
. @9 ^, r% [1 Wordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一个有序因子
! Q( q2 Z: t; H0 _7 B1 ^
  t) h5 O2 c- ]% s1 ~- a1 R2 v7 r, v





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5