You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS中如何使用column输入方式并确定变量对应的列范围

列范围标识的含义与确定方法

你看到的1-2、4-7这类标注是SAS固定列输入模式下的变量位置声明,用来指定每个变量在原始数据行中占据的起止列号(列号从最左侧第一个字符开始,从1起计数)。

列范围的确定逻辑

确定范围只需要对齐所有数据行,按变量的位置和最大宽度统计即可,以你给出的数据集为例:
首先取一行完整的数据做基准,再结合所有观测中该变量的最大长度核对:
示例第一行数据(空格也占列位置):

位置1:1 2:0 3:2 4:3 5:空格 6:r 7:e 8:d 9:空格 10:空格 11:空格 12:1 13:8 14:9 15:空格 16:1 17:6 18:5
核对所有观测的变量宽度:

  • id变量所有值都是4位数字,统一占据第1-4列,所以标注1-4
  • team是字符变量,最长值为6位的yellow,所有观测的team值都左对齐从第6列开始,最长到第11列结束,所以标注6-11
  • startweight所有值都是3位数字,统一占据第12-14列,标注12-14
  • endweight值为3位数字或1位缺失值.,统一占据第16-18列,标注16-18

你当前代码的输入模式说明

你现在写的input id team $ startweight endweight;属于自由列表输入模式,不需要指定列范围:

  • 这种模式默认以空格为分隔符,自动按变量顺序读取空格分隔的内容,只要你的数据变量顺序和input语句的变量顺序一致、值之间用空格分隔就能正常运行
  • 对应的固定列输入写法如下:
input id 1-4 team $ 6-11 startweight 12-14 endweight 16-18;

你的完整可运行代码如下:

data test;
input id team $ startweight endweight;
datalines;
1023 red    189 165
1049 yellow 145 124
1219 red    210 192
1246 yellow 194 177
1078 red    127 118
1221 yellow 220   .
1095 blue   135 127
1157 green  155 141
1331 blue   187 172
1067 green  135 122
1251 blue   181 166
1333 green  141 129
1192 yellow 152 139
1352 green  156 137
1262 blue   196 180
1087 red    148 135
1124 green  156 142
1197 red    138 125
1133 blue   180 167
1036 green  135 123
1057 yellow 146 132
1328 red    155 142
1243 blue   134 122
1177 red    141 130
1259 green  189 172
1017 blue   138 127
1099 yellow 148 132
1329 yellow 188 174
;
run;

内容的提问来源于stack exchange,提问作者user16914149

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 20:39:03