如何在 R 中将字符向量视为整数或数字

How to treat character vector as integers or numeric in R

提问人:Kocz 提问时间:6/21/2020 最后编辑:Artem SokolovKocz 更新时间:6/21/2020 访问量:55

问:

我想做一些关于攀岩的研究。数据集包含几列爬坡等级,如下所示:1,2,3,4a,4b,4c,5a,5b,5c,6a,6a+,6b,6b+,6c,6c+,7a,7a+....

我想用它们作为数字。从 1 到 28(从 1 到 9c)。尝试转换为因子,但绘图函数无法将它们作为轴的数据处理。也不能对它们使用汇总函数(如平均值)。这是一种为字符赋值的方法吗?

谢谢!

r

评论

0赞 jay.sf 6/22/2020
请考虑以下答案:将 X 轴替换为自己的值

答:

0赞 jdobres 6/21/2020 #1

让我们编造一些示例数据。请注意,在此数据框中,成绩不是按特定顺序排列的,有些值缺失,有些值重复:

df <- data.frame(grades = c('1','4a','3', '3', '3', '2','5a','4a','4b','4c'))
> df
   grades
1       1
2      4a
3       3
4       3
5       3
6       2
7      5a
8      4a
9      4b
10     4c

我们可以使用该函数创建一个数字排序,以预期顺序指定所有唯一级别,并使用“ordered = T”:factor

df$grades_factor = factor(df$grades, levels = c('1','2','3','4a','4b','4c','5a'), ordered = T)

最后,我们可以简单地将这个新列转换为数字,以显示基础数值:

df$grades_num = as.numeric(df$grades_factor)

  grades grades_factor grades_num
1       1             1          1
2      4a            4a          4
3       3             3          3
4       3             3          3
5       3             3          3
6       2             2          2
7      5a            5a          7
8      4a            4a          4
9      4b            4b          5
10     4c            4c          6

评论

0赞 Kocz 6/22/2020
谢谢!:)这就是我找到的解决方案。但是,如果我想制作一个散点图,我必须使用 grades_num 变量,这对于图形部分来说很好,但在 x 轴上,会有数字,而不是标签:(
0赞 jdobres 6/22/2020
有许多方法可以用文本标签替换绘图轴上的数字,具体取决于所使用的绘图包。但这是一个单独的问题。