r语言清除变量_【R语言实用技巧】类别变量的顺序自定义设置

2807a3702cb711e91c803252d4e1ab40.png

作者:宋星云 中国科学院心理研究所硕士,R语言爱好者。已有多年数据分析与R语言的实战经验,毕业后将从事数据分析工作。

个人公众号:星云实验室

类别变量(nominal variable),又称名义变量、称名变量、分类变量,是一种常用的定性变量,用于表示类别。本身没有等级顺序之分,不可比较大小,不可加减乘除。例如性别、民族、肤色、学号等等。

在R中,通常使用factor类型的变量存储类别变量,有时即便你直接使用了string类型,但是在数据分析中,R依旧会将string变量转化为factor变量进行分析。通常,我们可以直接用factor函数进行变量类型的转化:

item

但是,factor类型的变量默认是按照字符串的顺序排列的,在数据可视化、回归分析中,排列顺序均会有一定的影响。有时会很麻烦。

举个例子:下表是一次考试中4题的平均分(数据为自编)

de69d997899b4f2d765492cfa9a9cdf7.png

现在我们要绘制4题的柱状图,如果直接绘制,那么会是这样的情况:

c4ab67ac9dda33a09eb73d89b67947dc.png

在横轴上,item会按照字符串顺序排列,而不是按照我们给出的T1,T2,T3,T11的顺序排列。

那么该怎么办呢?

beb2a955c1385caa797d0451354965c8.gif

levels函数能够显示factor变量的顺序,labels函数则显示我们看到的那部分内容。我们直接对factor变量的label属性进行设置,就可以达到自定义顺序的效果:

item"T1","T2","T3","T11")

factor(item)

# > [1]  T1 T2 T3 T11

# > Levels: T1 T11 T2 T3

### 可以使用此方案为factor后的变量加自定义的顺序

ordered.item factor(1:length(item), labels = item)

ordered.item

# > [1]  T1 T2 T3 T11

# > Levels: T1 T2 T3 T11

有时,在数据框(data.frame)内,排列的顺序也比较复杂,例如下表,我们依旧想要按照 T1 T2 T3 T11 的顺序来画图,此时不能直接按照上述方法操作。

acd1ecd23ddf9a5c69ee28c4b722110c.png

解决方案依旧不复杂:

### 首先写入自定义顺序

ordered.item "T1","T2","T3","T11")

ordered.item factor(1:length(ordered.item),labels = ordered.item)

### 然后对数据框df中的item字段进行自定义顺序排列

df$itemfactor(df$item, levels = levels(ordered.item))
levels(df$item)
# > [1] T1 T2 T3 T11

这样,在后续的分析中,df的item字段就会是按照 T1 T2 T3 T11 的顺序来排列了。

aeb08733906bbd84a56070f7a4f44965.png 往期精彩:
  • 【R文本分析】《工作细胞》是一部成功的科普番嘛?

  • 【R可视化】你家乡的肯德基都在哪儿?

471310ca8f20ea9c606255312338f25c.png

公众号后台回复关键字即可学习

回复 爬虫             爬虫三大案例实战  回复 Python        1小时破冰入门

回复 数据挖掘      R语言入门及数据挖掘回复 人工智能      三个月入门人工智能回复 数据分析师   数据分析师成长之路 回复 机器学习      机器学习的商业应用回复 数据科学      数据科学实战回复 常用算法      常用数据挖掘算法

60454065ac2d7141b48f5e983de2641e.png我怎么这么好看
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值