sas - 防止 SAS 自动删除字符串中的尾随空格
问题描述
我有一个示例数据集,如下所示。
data d01;
infile datalines dlm='#';
input Name & $15. IdNumber & $4. Salary & $5. Site & $3.;
datalines;
アイ# 2355# 21163# BR1
アイウエオ# 5889# 20976# BR1
カキクケ# 3878# 19571# BR2
;
data _null_ ;
set d01 ;
file "/folders/myfolders/test.csv" lrecl=1000 ;
length filler $3;
filler = ' ';
w_out = ksubstr(Name, 1, 5) || IdNumber || Salary || Site || filler;
put w_out;
run ;
我想将此数据集导出为 csv(固定宽度格式),每行的长度为 20 字节(20 个 1 字节字符)。
但 SAS 会自动删除我的尾随空格。所以结果将是每行 17 个字节。(填充符被截断)
我知道我可以像这样插入填充物。
put w_out filler $3.;
但这在“站点”列为空的情况下不起作用,SAS 将截断其列,结果也不是每行 20 个字节。
解决方案
我不太明白你想用 ksubstr 做什么,但如果你想添加填充以使总长度达到 20 个字符,你可能需要编写一些额外的逻辑:
data _null_ ;
set d01 ;
file "/folders/myfolders/test.csv" lrecl=1000 ;
length filler $20;
w_out = ksubstr(Name,1,5) || IdNumber || Salary || Site;
len = 20 - klength(w_out) - 1;
put w_out @;
if len > 0 then do;
filler = repeat(" ", len);
put filler $varying20. len;
end;
else put;
run ;
推荐阅读
- sql - 将光标值用于光标内的查询
- javascript - 不同ID的链接设置值的onclick
- microsoft-graph-api - 通过 Microsoft Graph 请求时组为空
- r - 有没有办法将循环输出存储到 R 中的列表中
- windows - 错误:尝试在 Windows 上克隆 Sapper 项目时路径无效
- google-cloud-platform - 如何重启谷歌云机器组
- php - 修改一个wordpress/buddypress php函数
- asp.net - asp.net core 3.0 上的 502 Bad Gateway 托管在 ubuntu 18.04 TLS 和 nginx
- encoding - 使用“ffmpeg hevc_nvenc”创建的文件无法在电视上播放。(使用 nvidia 的视频编解码器 SDK 9.1)
- r - 绘制具有部分共同图例的多个段