【r<-基础|方案】改变因子水平次序

问题

你想要改变因子水平出现的次序。

方案

R中有两种不同类型的因子变量:有序无序。比如{小,中,大}和{钢笔,橡皮擦,铅笔}。对于绝大多数分析而言,一个因子变量是有序还是无序的不重要。如果因子是有序的,那么这个因子水平的特定次序是重要的(小<中<大)。如果因子是无序的,那么因子水平同样会以一定的顺序出现,但这仅仅为了方便而已(钢笔,橡皮擦,铅笔) - 但有时它是重要的,例如它会觉得结果如何输出,图形元素如何展示。

一种改变因子次序的方式是对因子使用factor()函数并且直接指定它们的次序。下面这个例子中,ordered()函数可以替换factor()函数。

下面是这个例子的数据:

# 创建一个错误次序的因子
sizes <- factor(c("small", "large", "large", "small", "medium"))
sizes
#> [1] small  large  large  small  medium
#> Levels: large medium small

因子水平被显式地指定:

sizes <- factor(sizes, levels = c("small", "medium", "large"))
sizes
#> [1] small  large  large  small  medium
#> Levels: small medium large

我们同样可以对有序因子这样操作:

sizes <- ordered(c("small", "large", "large", "small", "medium"))
sizes <- ordered(sizes, levels = c("small", "medium", "large"))
sizes
#> [1] small  large  large  small  medium
#> Levels: small < medium < large

另一种方式是使用relevel()函数在列表中制作一个特定水平(这对有序因子不起作用)。

# 创建错误次序的因子
sizes <- factor(c("small", "large", "large", "small", "medium"))
sizes
#> [1] small  large  large  small  medium
#> Levels: large medium small

# 使得 medium 排最前面
sizes <- relevel(sizes, "medium")
sizes
#> [1] small  large  large  small  medium
#> Levels: medium large small

# 使得 small 排最前面
sizes <- relevel(sizes, "small")
sizes
#> [1] small  large  large  small  medium
#> Levels: small medium large

当因子创建时,我们可以指定合适的顺序。

sizes <- factor(c("small", "large", "large", "small", "medium"),
                levels = c("small", "medium", "large"))
sizes
#> [1] small  large  large  small  medium
#> Levels: small medium large

反转因子水平次序。

# 创建错误次序的因子
sizes <- factor(c("small", "large", "large", "small", "medium"))
sizes
#> [1] small  large  large  small  medium
#> Levels: large medium small

sizes <- factor(sizes, levels=rev(levels(sizes)))
sizes
#> [1] small  large  large  small  medium
#> Levels: small medium large

原文链接:http://www.cookbook-r.com/Manipulating_data/Changing_the_order_of_levels_of_a_factor/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2.4 因子 统计中变量:区间变量,名义变量和有序变量 区间变量取连续的数值,可以进行求和平均值等运算 名义变量和...
    Andrew_bao阅读 641评论 0 0
  • Chapter 13 Factor Analysis 本篇是第十三章,内容是因子分析。这篇博客的完整内容包含各类数...
    G小调的Qing歌阅读 22,517评论 0 11
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,384评论 11 349
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,287评论 0 2
  • 每个人心底或许都有一片孤独而自由的大海,我们往往在深夜,独自潜入其中,有时又因为潜入的太深,而思念陆地上的灯火。大...
    绯陌阅读 301评论 0 0