数学建模社区-数学中国
标题:
R语言入门基础之因子和有序因子
[打印本页]
作者:
数模天下
时间:
2012-12-24 14:02
标题:
R语言入门基础之因子和有序因子
因子(factor)和有序因子(ordered factor)
因子用来存储类别变量(categorical variables)和有序变量,这类变量不能用来计算而只能用来分类或者计数。
) S: Y4 W2 E$ H4 g8 D% L1 Z0 x' X
因子表示分类变量,有序因子表示有序变量。
& T+ P& f/ T$ [9 p# I' M; Z2 |' X9 C
生成因子数据对象的函数是factor(),语法是factor(data, levels, labels, ...),其中data是数据,levels是因子水平向量,labels是因子的
# R; z2 o" m; G( k X' F
7 `. n2 | ^4 H, j- h ^; {2 c: Z
标签向量。
: @- l' M3 m2 }& A
1、创建一个因子。
: Y* g3 D# b8 A: A
例1:colour <- c('G', 'G', 'R', 'Y', 'G', 'Y', 'Y', 'R', 'Y')
- i, r% Y% v& v4 A3 g8 y
col <- factor(colour)
8 F& s2 p0 [% B: F: w
col1 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('Green', 'Red', 'Yellow')) #labels的内容替换colour相应位置对应levels的内容
$ S# k* _) r) p: E' X; s
col2 <- factor(colour, levels = c('G', 'R', 'Y'), labels = c('1', '2', '3'))
8 g _8 b% U# {& Y) k/ ^) C
col_vec <- as.vector(col2) #转换成字符向量
7 Y, L* |6 C3 Q2 }% H0 H
col_num <- as.numeric(col2) #转换成数字向量
% N9 F& u/ S( [1 u w, j/ j) j
col3 <- factor(colour, levels = c('G', 'R'))
' R# l1 c L# g# r
9 w1 @- a! F. c& F8 m
2、创建一个有序因子。
; ]% Q' V9 @% [8 H+ ~9 i
例1:score <- c('A', 'B', 'A', 'C', 'B')
2 u7 b; H4 s- T3 L& A
score1 <- ordered(score, levels = c('C', 'B', 'A')); score1
+ ^" O ]# Y* H( f
9 k2 l' X$ Y! l" ]
3、用cut()函数将一般的数据转换成因子或有序因子。
, I! _: U: m! S7 a
例1:exam <- c(98, 97, 52, 88, 85, 75, 97, 92, 77, 74, 70, 63, 97, 71, 98,
# W8 ^! \! p, P9 U0 W
65, 79, 74, 58, 59, 60, 63, 87, 82, 95, 75, 79, 96, 50, 88)
/ U3 Q, o: E+ [! f
exam1 <- cut(exam, breaks = 3) #切分成3组
" ^* m3 I3 O3 l) d
exam2 <- cut(exam, breaks = c(0, 59, 69, 79, 89, 100)) #切分成自己设置的组
3 U6 r& l' ?5 p+ g3 b) V
attr(exam1, 'levels'); attr(exam2, 'levels'); attr(exam2, 'class')
/ @* K2 v1 F! I2 y
ordered(exam2, labels = c('bad', 'ok', 'average', 'good', 'excellent')) #一个有序因子
2 x! i0 X3 p( S& g5 \
. E }( ]/ H8 e+ j* g) t4 ?* m
" j- X* J7 D( _1 L5 C7 g" L1 \1 s
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5