r - 在 R 中创建一个由级别名称填充的新列

标签 r

我有一个包含一列整数的 R 数据框。此列有一组级别:

my_data <- data.frame(x=c(1,2,3,1,2,3,1,2,3))
levels(my_data$x) <- c("group1", "group2", "group3")

如何创建一个新的字符列,其中填充了关卡名称?期望的输出:

> my_data
  x      y
1 1 group1
2 2 group2
3 3 group3
4 1 group1
5 2 group2
6 3 group3
7 1 group1
8 2 group2
9 3 group3

最佳答案

“x”列是添加了附加属性 levels 的数字列(本身不是 factor 列)

 str(my_data$x)
 num [1:9] 1 2 3 1 2 3 1 2 3
 - attr(*, "levels")= chr [1:3] "group1" "group2" "group3"

因此我们使用“x”值(按顺序)作为levels 属性的索引

library(dplyr)
my_data <- my_data %>%
     mutate(y = levels(x)[x])

-输出

my_data
x      y
1 1 group1
2 2 group2
3 3 group3
4 1 group1
5 2 group2
6 3 group3
7 1 group1
8 2 group2
9 3 group3

或者在base R

mydata$y <- with(my_data, levels(x)[x])

如果'x'的值不同,使用match

mydata$y <- with(my_data, levels(x)[match(x, unique(x))])

关于r - 在 R 中创建一个由级别名称填充的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72467149/

相关文章:

r - 确定某项在变量中的出现次数

r - 如何在 docker 中加速 R 包的安装

在 r 中读取大文本文件

r - 输出为 png 时 gt 表被截断

使用 foreach 注册 PSOCK 集群 - R 2.14

arrays - 在 df1 中的键数组中查找 df2 中的键并合并相应的值

r - R中斜率系数的推论

R格子条形图: specify colour of legend?

r - 将 NA 分配给列表中的值

r - 如何在Windows R下删除临时文件夹?