从竖线分隔代码列表提取项目主特征码的实现方法
解决方案(R语言)
首先定义输入的字符向量:
codes <- c("151", "510|130|130", "311|110", "140", "160|160", "160|160|130", "160", "160", "160", "151", "151", "160|110")
编写自定义函数处理单个字符串,提取主特征:
get_main_feature <- function(x) { # 按|拆分字符串为代码列表 split_codes <- strsplit(x, "\\|")[[1]] # 统计每个代码的出现频次 freq_table <- table(split_codes) # 获取最高频次 max_count <- max(freq_table) # 筛选出频次最高的代码,若有多个则取第一个 main_code <- names(freq_table)[freq_table == max_count][1] return(main_code) }
将函数应用到整个向量,得到结果:
result <- sapply(codes, get_main_feature) print(result)
运行后输出结果:
151 510|130|130 311|110 140 160|160 160|160|130 "151" "130" "311" "140" "160" "160" 160 160 160 151 151 160|110 "160" "160" "160" "151" "151" "160"
逻辑说明
strsplit(x, "\\|"):由于|是正则特殊字符,用转义符\\拆分字符串table():统计每个代码的出现次数,生成频次对照表- 筛选出频次等于最大值的代码并取第一个元素,满足“无占优代码时选第一个”的要求
内容的提问来源于stack exchange,提问作者KC15
相关产品推荐
相关产品推荐

