R语言如何创建由因子水平名称填充的数据框新列
R语言根据整数列预设水平生成对应字符列
你当前已经给整数列x设置了levels属性,直接通过位置索引就能快速生成符合要求的新列,完全匹配你给出的预期输出。
最简实现(保留x为整数类型)
直接运行以下代码即可:
my_data$y <- levels(my_data$x)[my_data$x]
运行后打印my_data,输出结果和你预期完全一致:
> 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只是添加了额外属性,R的大部分分类计算函数不会自动识别这个属性。如果你后续需要用x做分组统计、可视化等分析,建议先将x转为正式的因子类型,再提取标签生成新列:
# 转为因子,绑定数值与对应水平标签 my_data$x <- factor( my_data$x, levels = c(1, 2, 3), labels = c("group1", "group2", "group3") ) # 提取因子的文本标签生成y列 my_data$y <- as.character(my_data$x)
注意:这种写法下x列会变为因子类型,打印时仍显示1、2、3的数值,但存储类型不再是整数,如果需要保留x为纯整数,使用第一种方法即可。
内容的提问来源于stack exchange,提问作者James Martherus
相关产品推荐
相关产品推荐

