我正在尝试将具有数千个观测值的向量“年经验”转换为数值。可能将“年体验”的响应编码为“ 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值的向量。什么是获得我想要的输出的正确解决方案?
答案 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))))