5.4 Factors

5.4.1 基础

有时候,我们的变量是以文字的形式呈现,但是它们不是单纯的文字,而是有大小的差别,或是能以一定顺序排列,比如十二个月份 (Jan, Feb, …),成绩的“优、良、中、差”,衣服的尺寸 (XS, S, M, XL, …). 假设我们在做客户满意度调查,七位客户的反馈是

满意度_v <- c("满意", "非常满意", "满意", "不满意", "满意", "非常不满",  "不满意")

我们试图用sort()把七个反馈按满意度从小到大排列:

sort(满意度_v)
#> [1] "不满意"   "不满意"   "满意"     "满意"     "满意"     "非常不满"
#> [7] "非常满意"

可见其排序并不是有意义的。(因为默认英语根据’abcde…’排序,中文根据笔画排序)

我们可以把这个vector做成factor,并用参数levels规定排序顺序:

# 按照惯例,小的值在前,大的在后;“非常不满”应为满意度最低的值。
满意度_f <- factor(满意度_v, levels = c("非常不满", "不满意", "满意", "非常满意"))
sort(满意度_f)
#> [1] 非常不满 不满意   不满意   满意     满意     满意     非常满意
#> Levels: 非常不满 不满意 满意 非常满意

这样排序就是正确的了。

class(满意度_f) # "factor"
is.vector(满意度_f) # FALSE

5.4.2 在绘图中的应用

5.4.3 高端操作