在任意数据集中都有字符串列,例如e。 G。虹膜集中的物种。我必须将它们转换为ML目的的小整数(矩阵运算,仅用于数字),并在计算后将其取反。例如:{“ setosa”-> 1,“ versicolor”-> 2,“ virginica”-> 3)。
我遍历列并检查每个列的类型(第一个元素的模式)。如果它是字符(仅是有问题的模式),我想从该列中获取一组不同的值(例如,虹膜集中的3种),将它们映射到连续的整数(这样,我将真正拥有矩阵而不是数据帧)并将其反转计算后(例如,将目标集中的预测值显示为字符串,而不是我的任意映射整数)。我想我需要一个列表映射列索引(我事先不知道要映射哪些列)来映射特定列(字符串->整数)。
答案 0 :(得分:0)
执行以下操作:
fac <- factor(charvar)
num <- as.numeric(fac)
# Do some manipulation of num, producing newnum
newcharvar <- levels(fac)[newnum]
例如,
> fac <- factor(iris$Species)
> num <- as.numeric(fac)
> head(num)
[1] 1 1 1 1 1 1
> newnum <- num[c(1, 100)]
> newnum
[1] 1 2
> levels(fac)[newnum]
[1] "setosa" "versicolor"