如何利用已创建的映射替换R数据集中的医院名称为对应编码?
解决方案
数据说明
现有R语言数据如下:
- 医院名称向量:
ls_Hospital <- c("Hospital1", "Hospital2", "Hospital3", "Hospital4", "Hospital5") # 向量
- 关联参数的医院列表:
list_of_hospit_param <- list(Hospital1=c("A","B","C"), Hospital2=c("C","Z","E"), Hospital4=c("K"))
已完成操作
已创建医院名称到编码的映射:
codes <- c("A","B","C","L","Z","X") hospital_mapping <- setNames(codes, ls_Hospital)
替换操作步骤
1. 替换医院名称向量 ls_Hospital
直接利用映射向量hospital_mapping索引原向量,即可得到替换后的编码向量:
# 生成替换后的编码向量 ls_Hospital_coded <- hospital_mapping[ls_Hospital] # 查看结果 ls_Hospital_coded
执行后输出结果:
Hospital1 Hospital2 Hospital3 Hospital4 Hospital5 "A" "B" "C" "L" "Z"
2. 替换关联参数列表 list_of_hospit_param
只需替换列表的名称为对应编码,列表内的参数保持不变,用setNames结合映射即可完成:
# 将原列表的医院名称映射为编码,作为新名称 new_names <- hospital_mapping[names(list_of_hospit_param)] # 为列表设置新名称 list_of_hospit_param_coded <- setNames(list_of_hospit_param, new_names) # 查看结果 list_of_hospit_param_coded
执行后输出结果完全符合需求:
$A [1] "A" "B" "C" $B [1] "C" "Z" "E" $L [1] "K"
内容的提问来源于stack exchange,提问作者Seydou GORO
相关产品推荐
相关产品推荐

