R - 将字符变量转换为.numeric,但按字母顺序递减

时间:2015-03-03 03:34:04

标签: r recode

所以我有一个名为“Mark”的字符变量,有3个级别“A”,“B”,“C” 我想将其转换为数值,以用于线性回归。

当我使用as.numeric(Mark)时,它按字母顺序递增重新编码 A = 1,B = 2,C = 3

但我想要的是按字母顺序递减重新编码,比如 A = 3,B = 2,C = 1

我尝试将descreasing = TRUE / FALSE,ordered = TRUE / FALSE作为as.numeric()中的选项,但它似乎不起作用。 这有什么简单的方法吗?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

您应该能够根据rev(levels(Mark))重新计算因素:

set.seed(10)
x <- factor(sample(LETTERS[1:5], 10, TRUE))
x
#  [1] C B C D A B B B D C
# Levels: A B C D
as.numeric(x)
#  [1] 3 2 3 4 1 2 2 2 4 3
as.numeric(factor(x, levels = rev(levels(x))))
#  [1] 2 3 2 1 4 3 3 3 1 2