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-4team是字符变量,最长值为6位的yellow,所有观测的team值都左对齐从第6列开始,最长到第11列结束,所以标注6-11startweight所有值都是3位数字,统一占据第12-14列,标注12-14endweight值为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
相关产品推荐
相关产品推荐

