r - 将分类数据转换为数值向量
问题描述
我正在尝试将具有数千个观察值的向量“年经验”转换为数值。“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 值的向量。获得所需输出的正确解决方案是什么?
解决方案
您可以尝试使用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))))
推荐阅读
- css - Bootstrap 4:如何强制标签导航保持原位?
- javascript - 具有共享广告内容的静态页面
- python - win32api.getasynckeystate 在专注于其他应用程序时无法检测到键
- matlab - 如何在 Matlab 中对 m 和 x 都是向量的函数 besselj(m,x) 进行向量化?
- mysql - 如何根据多个最大列值选择一行?
- azure - Azure 主题订阅筛选器/订阅规则
- c# - 使用 OpenID Connect (AWS Cognito) 时如何避免 CORS 问题?
- c++ - 解释程序的输出
- node.js - 当我的服务器出错时是否无法取消交易
- laravel - 移动项目目录后存储链接不起作用