r - 有没有一种基本的方法可以用标签替换 R 的级别整数编码?

标签 r r-factor

这是我在这里的第一个问题,所以我希望它适合这个论坛。非常感谢任何关于如何改进问题或标题的建议。

给定

> experiment <- data.frame(old=factor(c("z","z","z","z","z"),levels=c("x","y","z")),
new=factor(c("y","z","x",NA,NA),levels=c("x","y","z")))
> experiment
  old  new
1   z    y
2   z    z
3   z    x
4   z <NA>
5   z <NA>

我想在新的不适用时用新的更新旧的。命令

> experiment$old <- ifelse(is.na(experiment$new),experiment$old,experiment$new)

似乎是我想要的,除了我得到的是 R 的级别整数编码而不是标签本身:

> experiment
  old  new
1   2    y
2   3    z
3   1    x
4   3 <NA>
5   3 <NA>

是否有一些基本的方法可以将 R 的级别整数编码转换回标签?我希望得到

> experiment
  old  new
1   y    y
2   z    z
3   x    x
4   z <NA>
5   z <NA>

作为输出。

非常感谢。

最佳答案

ifelse() 将不起作用,因为它会删除属性。这个很好,因为列共享因子水平。我们可以使用 within() 如下:

within(experiment, { old[!is.na(new)] <- new[!is.na(new)] })
#   old  new
# 1   y    y
# 2   z    z
# 3   x    x
# 4   z <NA>
# 5   z <NA>

关于r - 有没有一种基本的方法可以用标签替换 R 的级别整数编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49950312/

相关文章:

聚合/by 的反转?

r - 因子水平和因子标签之间的混淆

r - 固定滚动线性回归的起点

r - 具有因子设计的 ANCOVA 中的事后检验错误

r - 如何删除字符串的最后一个单词,但前提是其他单词至少有一个重复?

r - 为什么在 R 中重新编码不会改变原始值?

r - geom_boxplot() : forcing an empty level to appear

r - 如何更改ggplot2中图例的背景颜色?

r - 为什么在包含 R 中的因素的方差分析中删除变量不会降低自由度?

r - 如何连接因子而不将它们转换为整数级别?