我有一个像
这样的矢量A <- c("A","A","B","B", "C","C","C", "D")
我想根据A中的序列将其转换为数字向量,如下所示:
c(1:2, 3:4, 5:7, 8)
这可能吗?
答案 0 :(得分:4)
尝试:
A <- c("A","A","B","B", "C","C","C", "D")
as.numeric(factor(A))
[1] 1 1 2 2 3 3 3 4
如果你真的想要一个从1到length
向量的序列:
labels(factor(A))
[1] "1" "2" "3" "4" "5" "6" "7" "8"
或
1:length(A)
[1] 1 2 3 4 5 6 7 8
如果第一个序列符合您的要求,您可能会发现plyr::mapvalues
有趣,以防您在某些时候遇到更复杂的案例。例如,
library(plyr)
mapvalues(A, from=unique(A), to=1:4)
[1] "1" "1" "2" "2" "3" "3" "3" "4"
当您需要更多控制时,这会派上用场。例如,您可以轻松地将其他输出作为to
参数提供,例如month.name[1:4]
。