提问人:Kocz 提问时间:6/21/2020 最后编辑:Artem SokolovKocz 更新时间:6/21/2020 访问量:55
如何在 R 中将字符向量视为整数或数字
How to treat character vector as integers or numeric in R
问:
我想做一些关于攀岩的研究。数据集包含几列爬坡等级,如下所示:1,2,3,4a,4b,4c,5a,5b,5c,6a,6a+,6b,6b+,6c,6c+,7a,7a+....
我想用它们作为数字。从 1 到 28(从 1 到 9c)。尝试转换为因子,但绘图函数无法将它们作为轴的数据处理。也不能对它们使用汇总函数(如平均值)。这是一种为字符赋值的方法吗?
谢谢!
答:
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
有许多方法可以用文本标签替换绘图轴上的数字,具体取决于所使用的绘图包。但这是一个单独的问题。
评论