基于字符串序列将字符串向量转换为数字向量

时间:2016-03-22 13:23:38

标签: r

我有一个像

这样的矢量
A <- c("A","A","B","B", "C","C","C", "D")

我想根据A中的序列将其转换为数字向量,如下所示:

c(1:2, 3:4, 5:7, 8)

这可能吗?

1 个答案:

答案 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]