将分类数据转化为数字向量

时间:2019-08-05 23:29:39

标签: r categorical-data

我正在尝试将具有数千个观测值的向量“年经验”转换为数值。可能将“年体验”的响应编码为“ 0至1”,“ 1至2”,“ 2至3”等,一直到“ 39至40”。

我认为一个简单的factor命令将提供一个数字矢量。考虑以下多年经验的示例响应,我正在寻找1与“ 0至1”响应相关联的信息:


YE<- c("8 to 9", "2 to 3", "1 to 2"...."39 to 40"
YE_adjusted<- as.numeric(factor(YE, c(1,2,3,4,5,6,7....40)
View(YE_adjusted)

我们查看的YE_adjusted仅是NA值的向量。什么是获得我想要的输出的正确解决方案?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用mixedsort()包中的gtools来设置因子水平,然后强制转换为数字。

library(gtools)

YE_adjusted<- as.numeric(factor(YE, levels = unique(mixedsort(YE))))

这应确保在转换之前将因子水平保持合理的顺序:

factor(YE, levels = unique(mixedsort(YE)))

[1] 8 to 9   2 to 3   1 to 2   39 to 40
Levels: 1 to 2 2 to 3 8 to 9 39 to 40

如果要在基础中执行此操作,则可以尝试以下操作。如果您的数据遵循提供的示例,则应该可以使用。

as.numeric(factor(as.numeric(sub("(\\d+).*", "\\1", YE))))