【问题标题】:renaming many levels of a factor - R -重命名因子的多个级别 - R -
【发布时间】:2017-05-24 17:32:06
【问题描述】:

我正在尝试重命名因子变量的所有级别的名称,因此我可以运行TukeyHSD。 Tukey 程序不喜欢用数字命名级别。因此,我不关心名字本身,我只希望名字是一个字符——名字可以是字母表中的单个字母。

问题是我有很多级别。例如:

x1 <- sample(1:75,100,replace=T) 
x1 <- as.factor(x1)

> str(x1)
 Factor w/ 54 levels "1","2","4","5",..: 26 33 23 23 15 18 21 12 29 16 ...

我知道如何重命名它们的唯一方法是手动输入每个级别的名称:

levels(x1) <- c('name1', 'name2',...,'name54')

如何避免一一输入所有名称?是否有自动重命名?

谢谢!

【问题讨论】:

  • levels(x1) &lt;- paste0("name", levels(x1))
  • 谢谢@Aurele,这正是我所需要的

标签: r rename levels tukey


【解决方案1】:

@Aurèle 在 cmets 中的回答可能是一个解决方案,但如果您不希望关卡中有任何数字,您可以尝试组合随机字母。这是一个可能的解决方案:

sample(combn(letters, 2, FUN = function(x) {paste0(x[1], x[2])}), length(levels(x1)))

输出:

 [1] "uv" "co" "ko" "eg" "ew" "dv" "ej" "px" "bc" "ku" "ip" "hz" "dk" "ou" "cd" "an" "hv" "nz" "uy" "bd"
[21] "kz" "af" "oy" "qz" "kl" "be" "ox" "bi" "mv" "fo" "el" "gj" "tv" "lv" "cl" "vx" "hl" "hy" "rv" "np"
[41] "dt" "br" "gz" "av" "aw" "nr" "bj" "ho" "gk" "mq" "ms" "lp" "jw" "gi" "cq"

【讨论】:

  • 太好了,这行得通。如果我想将级别 1 的变量 x1 命名为 x11,将级别 2 的变量 x1 命名为 x12,该怎么办?
  • 我不明白这背后的逻辑。 3级应该是'x13'吗?
  • 抱歉问题不清楚。但正是 level3 -> x13, level4 -> x14
  • 那么你可以使用@Aurèle的方法:paste0('x1', 1:length(levels(x1)))。希望这能回答你的问题:)
  • 感谢@Carles Mitjans,你是对的,它奏效了。问题已回答:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多