如何分离向量中的数值与值标签以实现因子变量的排序和标记?
拆分字符串中的数值与标签向量(R语言实现)
问题描述
给定包含数值-标签映射的字符串,需将数值和对应标签分别提取到独立向量中,用于后续因子变量的排序与标记操作。
示例输入
text <- "1 = Less than 1 month; 2 = 1 to 3 months; 3 = More than 4 months, less than 1 year"
解决方案
方法一:用stringr包(语法直观)
library(stringr) # 按分号拆分每个键值对 items <- str_split(text, "; ")[[1]] # 提取开头的数值部分 numbers <- str_extract(items, "^\\d+") # 移除"数字 = "前缀,提取标签 characters <- str_remove(items, "^\\d+ = ")
方法二:基础R实现(无需额外包)
# 拆分出每个条目 items <- strsplit(text, "; ")[[1]] # 拆分每个条目为数值和标签,分别提取 numbers <- sapply(strsplit(items, " = "), `[`, 1) characters <- sapply(strsplit(items, " = "), `[`, 2)
结果验证
执行代码后得到目标向量:
numbers #> [1] "1" "2" "3" characters #> [1] "Less than 1 month" "1 to 3 months" #> [3] "More than 4 months, less than 1 year"
后续因子变量处理
若需生成有序因子变量,可使用:
# 基于标签生成有序因子 ordered_factor <- factor(characters, levels = characters, ordered = TRUE) # 或用数值作为底层编码,标签为显示值 ordered_factor <- factor(numbers, levels = numbers, labels = characters, ordered = TRUE)
内容的提问来源于stack exchange,提问作者EML
相关产品推荐
相关产品推荐

