如何使用PROC SQL将SAS数据集中的指定字符串替换为空值
实现方案
方案1:生成新的清洗后数据集(不修改原表)
用CASE WHEN匹配所有异常值,替换为SAS字符空值'':
PROC SQL; CREATE TABLE price_clean AS SELECT ID, CASE WHEN Price IN ('N/A', 'NA', 'NoValue') THEN '' ELSE Price END AS Price LENGTH=8 FROM price; QUIT;
方案2:直接修改原表
用UPDATE语句批量更新符合条件的行:
PROC SQL; UPDATE price SET Price = '' WHERE Price IN ('N/A', 'NA', 'NoValue'); QUIT;
可选:同步转为数值类型
如果你需要后续对Price做数值计算,可以在清洗时直接转为数值类型,异常值替换为SAS数值空值.:
PROC SQL; CREATE TABLE price_clean AS SELECT ID, CASE WHEN Price IN ('N/A', 'NA', 'NoValue') THEN . ELSE INPUT(Price, best32.) END AS Price FORMAT=8.2 FROM price; QUIT;
补充说明
- 你可以根据实际遇到的其他异常值,自行扩充
IN列表里的匹配项 - 清洗后空值符合SAS的空值规范,在后续计算、过滤中都会被自动识别为空
内容的提问来源于stack exchange,提问作者tech bitz
相关产品推荐
相关产品推荐

