如何为SAS数据集变量中的每个单词添加双引号?
SAS变量元素批量添加双引号解决方案
针对你需要将SAS数据集变量中单个/逗号分隔的多个单词,每个都包裹双引号的需求,先分析你之前代码无效的原因,再给出可行方案:
问题根源
你之前的代码need1=cat('"',tranwrd(have1," ",'" "'),'"')是替换空格,但你的变量里的分隔符是逗号,所以找不到替换目标,自然没有效果。
解决方案
根据你的变量格式,分两种场景处理:
场景1:变量为纯逗号分隔(无空格,如ABC,XYZ)
直接将逗号替换为", ",再给首尾添加双引号:
data want; set have; need1 = cat('"', tranwrd(have1, ',', '", "'), '"'); run;
- 测试效果:
have1=ABC→need1="ABC"have1=ABC,XYZ→need1="ABC", "XYZ"have1=ABC,PQR,KLM→need1="ABC", "PQR", "KLM"
场景2:变量逗号前后可能带空格(如ABC, XYZ或ABC , XYZ)
用正则表达式统一处理空格+逗号的情况,兼容性更强:
data want; set have; /* 替换所有逗号(前后任意空格)为", " */ temp = prxchange('s/\s*,\s*/", "/', -1, have1); need1 = cat('"', temp, '"'); run;
这个写法不管逗号前后有没有空格,都能输出统一格式的结果。
内容的提问来源于stack exchange,提问作者abhijeet
相关产品推荐
相关产品推荐

