r语言 - 将字符列更改为数字



我有一个数据框架df,其中列X有三个不同的变量a, b和c作为字符。例如

df$X <- data.frame(X = c(a,a,a,b,b,c,c,c,c), Y = ....)

我想把它转换成a = 1 b = 2 c = 3作为数字

我第一次尝试

df$X = as.factor(df$X)
transform(df, X = as.numeric(X))

现在我有一个三阶因子a=1 b=2 c=3。然而问题是,我需要列X为数字。如果我尝试

transform(df, X = as.numeric(as.character(X)))

transform(df, X = as.numeric(levels(X))[X])

对于所有的输入(a, b, c)我得到NA

我怎么能得到列X与数字1,2,3 ?

@jay的解。首先将字符编码作为一个因素是相当优雅的,因为它可以泛化到任意字符串,而不仅仅是单个字符。

如果代码是单个字符,则有另一种可能的解决方案,即使用内置常量letters并返回其中的位置:

sapply(df$X, function(x) {which(x == letters)})

最新更新