北京大学生物信息平台论坛

 找回密码
 立即注册
搜索
热搜: 通知 活动

【R】批量将因子中的水平重命名的一种方法

[复制链接]
licheng 发表于 2016-1-16 14:21:40 | 显示全部楼层 |阅读模式
Chong Jin on November 4, 2013:
批量将因子中的水平重命名的一种方法

今天写R代码的时候一个x轴标注的地方卡了我一下,后来转念一 想,在我的代码中,直接把因子中的水平重命名就可以了,不需要再调plot中的names。凑巧搜到了一种非常方便的方法,特别是需要更改多个level 名字的时候。需要使用plyr库中的revalue或者mapvalues函数。(这个库的功能非常强大,里面的函数可以认为是各种apply的进阶,旨 在替代for循环。)

参考来源:http://www.cookbook-r.com/Manipulating_data/Renaming_levels_of_a_factor/

下面就直接贴原文中的代码来演示了:
  1. # 范例
  2. # A sample factor to work with.
  3. x <- factor(c("alpha","beta","gamma","alpha","beta"))
  4. # alpha beta  gamma alpha beta
  5. # Levels: alpha beta gamma
  6. # 不使用plyr之一例,可以看出,要重命名多个的时候用for循环会比较麻烦
  7. # Rename by name: change "beta" to "two"
  8. levels(x)[levels(x)=="beta"] <- "two"
  9. # "alpha" "two"   "gamma"
  10. # 使用plyr之一例,revalue函数
  11. library(plyr)
  12. revalue(x, c("beta"="two", "gamma"="three")) # use named chr
  13. # "alpha" "two"   "three"
  14. # 或者,另一种使用plyr的方法,mapvalues函数
  15. mapvalues(x, from = c("beta", "gamma"), to = c("two", "three"))
  16. # "alpha" "two"   "three"
复制代码


回复

使用道具 举报

北京大学生物信息平台论坛

GMT+8, 2017-9-20 04:41 , Processed in 0.042660 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表