数学建模社区-数学中国

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

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

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

因子用来存储类别变量(categorical variables)和有序变量,这类变量不能用来计算而只能用来分类或者计数。5 R/ Z  x5 }9 K, V/ F
因子表示分类变量,有序因子表示有序变量。( A* B" ~+ t+ r' e7 r) w6 U
生成因子数据对象的函数是factor(),语法是factor(data, levels, labels, ...),其中data是数据,levels是因子水平向量,labels是因子的
/ D5 R* h! E$ \7 }* h7 E: [
$ e) e% v0 s7 ?4 ^1 a标签向量。
. A, R  t) h: g+ y6 A1、创建一个因子。2 b) \$ Z) i7 v+ b
   例1:colour <- c('G', 'G', 'R', 'Y', 'G', 'Y', 'Y', 'R', 'Y')
/ F& l: g/ F6 Z1 Fcol <- factor(colour)
0 k/ G* K5 w- \4 pcol1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow')) #labels的内容替换colour相应位置对应levels的内容# v) C+ Q2 m7 }4 z) v
col2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3'))
# _$ Z* g! d, k: K+ bcol_vec <- as.vector(col2) #转换成字符向量3 O6 s7 E/ d1 l
col_num <- as.numeric(col2) #转换成数字向量
8 C% g7 ]8 ?1 y+ n! A* z, Q( ccol3 <- factor(colour, levels = c('G', 'R'))
0 {: y5 U' A5 I) ~- C, _# C" L! n1 O8 u- U# d
2、创建一个有序因子。
* f9 q* o+ t' m  e- F    例1:score <- c('A', 'B', 'A', 'C', 'B')
$ x* T+ ~6 R) M! M/ |score1 <- ordered(score, levels = c('C', 'B', 'A')); score1+ `# [/ y3 B+ k4 p0 A3 o% T% [) H

- W1 P4 U" D9 [: H4 J+ T3、用cut()函数将一般的数据转换成因子或有序因子。$ o! p; ^- e5 L7 O9 T% p. b5 ~
    例1:exam <- c(98, 97, 52, 88, 85, 75, 97, 92, 77, 74, 70, 63, 97, 71, 98,
& C- H, Y( |$ ?1 f  65, 79, 74, 58, 59, 60, 63, 87, 82, 95, 75, 79, 96, 50, 88): `8 K8 r+ ?  k$ C' \
exam1 <- cut(exam, breaks = 3) #切分成3组: g, h' \+ p& D8 K: t( Q, {( x
exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己设置的组
/ f/ f3 O& U) f2 Z, f2 L3 K2 Vattr(exam1, 'levels'); attr(exam2, 'levels'); attr(exam2, 'class')% C: P+ D/ l  B4 |8 {2 j
ordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一个有序因子  ^$ S: z- x8 c  b) b7 E' s7 o

0 o) V+ c% N7 i
) ~9 \  z0 |) v4 Z) V




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