在R中,如何将字符(等级)转换为数字并放在单独的列中

Posted

技术标签:

【中文标题】在R中,如何将字符(等级)转换为数字并放在单独的列中【英文标题】:In R, how to turn characters (grades) into a number and put in a separate column 【发布时间】:2014-04-02 17:53:04 【问题描述】:

我有一个电子表格中的学生成绩列表,我想将成绩转换为数字。因此,例如,将“A”更改为“1”,将“C”更改为“3”。我希望它进入一个单独的列。

等级变量名为“CRSE_GRADE_OFF”

我在 Mac OS 10.8.5 上运行 Rstudio 0.98。

谢谢你

【问题讨论】:

提供您的数据in a reproducible format。 d$number <- as.numeric(as.factor(d$CRSE_GRADE_OFF)) Ben 的解决方案恰好奏效,因为 R 根据字母表对 A B C D E F 的因子进行排序,并按该顺序将它们强制转换为数字。 【参考方案1】:

您通常可以使用命名向量来简单地执行这些类型的映射操作:

students <- data.frame(name=c("J. Holly","H. Kally", "P. Spertson", "A. Hikh", "R. Wizht"),
                       CRSE_GRADE_OFF=c("A","D","E","A","A"))
scores = c(A=1, B=2, C=3, D=4, E=5, F=6)
students$grade <- scores[as.character(students$CRSE_GRADE_OFF)]
students
#          name CRSE_GRADE_OFF grade
# 1    J. Holly              A     1
# 2    H. Kally              D     4
# 3 P. Spertson              E     5
# 4     A. Hikh              A     1
# 5    R. Wizht              A     1

如果您想保留 Ben Bolker 的 as.numeric 解决方案,您可以明确设置 CRSE_GRADE_OFF 因子的可能水平:

students$CRSE_GRADE_OFF <- factor(students$CRSE_GRADE_OFF,
                                  levels=c("A", "B", "C", "D", "E", "F"))
students$grade <- as.numeric(students$CRSE_GRADE_OFF)

【讨论】:

以上是关于在R中,如何将字符(等级)转换为数字并放在单独的列中的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串输入(带空格的数字)转换为Shiny(R)中的数据帧?

SQL 解析数字数据的列字符串并存储在单独的列中

在 R 中使用混合类型将嵌套列表中的字符数字转换为数字

无法将带有字符串的文本文件转换为 R 中每行一个字符的列

如何将数字转换为字符串

将字符串分成单独的列 R