将分类数据转换为数值向量
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))))
我正在尝试将具有数千个观测值的向量 "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))))