将分类数据转换为数值向量

Turning categorical data into numeric vectors

我正在尝试将具有数千个观测值的向量 "Years Experience" 转换为数值。 "Years Experience" 的潜在响应编码为“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 值向量。获得所需输出的正确解决方案是什么?

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

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))))