首页 > 解决方案 > 将分类数据转换为数值向量

问题描述

我正在尝试将具有数千个观察值的向量“年经验”转换为数值。“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 值的向量。获得所需输出的正确解决方案是什么?

标签: rcategorical-data

解决方案


您可以尝试使用mixedsort()fromgtools包来设置因子水平,然后再强制为数字。

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

推荐阅读