R导论学习笔记(四):有序因子和无序因子

1
`因子(factor)是一个对等长的其他向量元素进行分类(分组)的向量对象。 R同时提供有序(ordered)和无序(unordered)因子。`
1
2
3
注意在字符向量中,“有序”意味着以字母排序的。因子可以简单地用函数factor() 创建:

> statef <- factor(state)
1
2
3
函数levels() 可以用来得到因子的水平(levels),相当于分类依据因子

> levels(statef)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
使用因子来计算样本中每个州的平均收入的一个例子:

> state <- c("tas", "sa", "qld", "nsw", "nsw", "nt", "wa", "wa",
"qld", "vic", "nsw", "vic", "qld", "qld", "sa", "tas",
"sa", "nt", "wa", "vic", "qld", "nsw", "nsw", "wa",
"sa", "act", "nsw", "vic", "vic", "act")>
statef <- factor(state)

# 查看> statef
[1] tas sa qld nsw nsw nt wa wa qld vic nsw vic qld qld sa
[16] tas sa nt wa vic qld nsw nsw wa sa act nsw vic vic act
Levels: act nsw nt qld sa tas vic wa
> levels(statef)
[1] "act" "nsw" "nt" "qld" "sa" "tas" "vic" "wa"

> incomes <- c(60, 49, 40, 61, 64, 60, 59, 54, 62, 69, 70, 42, 56,
61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,
59, 46, 58, 43)

我们可以用函数tapply():
> incmeans <- tapply(incomes, statef, mean)
这将给出一个均值向量。各个元素都用对应的水平名字标记。

act nsw nt qld sa tas vic wa44.500 57.333 55.500 53.600 55.000 60.500 56.000 52.250
解释:indomes数据在statef的分类/分组情况下,进行mean操作
1
`有时候因子的水平有自己的自然顺序并且这种顺序是有意义的。我们需要记录下来可能在进一步的统计分析中用到。函数ordered() 就是用来创建这种有序因子。在其他方面,函数ordered() 和factor 基本完全一样。大多数情况下,有序和无序因子的唯一差别在于前者显示的时候反应了各水平的顺序。另外, 在线性模型拟合的时候,两种因子对应的对照矩阵的意义是完全不同的。`
-------------Thanks for Reading!-------------