input语句里面的特殊符号用法总结

1、$修饰符,表示变量是字符串。$1-3表示取第一列到第四列的值;:$10.注意这里的冒号,表示input读取到下一个空格或者读完10个字符或者本行读取完成时停止; 如
data user;
input  name $1-3 +2 addr :$10.;
datalines;
xsc23 chongqing
lcy45 nanjing
;
proc print;
run;
name里面输入两条记录,分别为xsc,lcy。addr里面分别为chongqing和nanjing

2、&修饰符。表示读取数据到遇到两个连续空格或者读完变量定义长度的个字符或者本行读取完成时停止,如
data user;
input  name & $13. addr :$10.;
datalines;
xiao shucheng  chongqing
liu ming  nanjing
;
proc print;
run;
这里name里面可以读入xiao shucheng和liu ming而不会只读入xiao和liu。

3、@修饰符。表示读取数据时的列绝对指针。@10表示列指针跳到10的位置(指针从1开始而不是0开始,这里的10也可以是变量名或者表达式);@'str'表示列指针跳到字符串“str”的紧跟的列位置;如
data user;
a=13;
input name & $13. addr :$10. @'from=' from $10. @(a*2) sex $ ;
datalines;
xiao shucheng  chongqing f from=chengdu
liu ming  nanjing        m from=guangzhou
;
proc print;
run;

4、@单尾随修饰符表示多个input读取同一个数据行的数据,如
data user;
a=15;
input age 32-33 @;   
input  @1 name & $13. +4 addr :$10. @'from=' from $10. @(a*2) sex $ ;//这里@1是将列指针移到第1
datalines;
xiao shucheng  ----chongqing f 23 from=chengdu
liu ming  ----nanjing        m 25 from=guangzhou
lishu
;
proc print;
run;

5、@@双尾随修饰符表示一个input在同一行读取多组数据,如
data user;
input x y @@ ;
datalines;
12 13 14 25 46 78 45 56
;
proc print;
run;

6、+和-修饰符。表示读取数据时的相对列指针,+n表示指针向右移n个列,-n表示指针向左移n个列。如
data user;
a=15;
input name & $13. +4 addr :$10. @'from=' from $10. @(a*2) sex $ ;
datalines;
xiao shucheng  ----chongqing f from=chengdu
liu ming  ----nanjing        m from=guangzhou
;
proc print;
run;

7、#修饰符。#修饰符。表示读取数据时的行相对指针。#2表示行指针跳到当前行后第2行开始位置(当前行为1,下一行即为第2行,这里的2也可以是变量名或者表达式);如
data user;
a=15;
input name & $13. +4 addr :$10. @'from=' from $10. @(a*2) sex $  #2 school  $20. ;
datalines;
xiao shucheng  ----chongqing f from=chengdu
重庆大学
liu ming  ----nanjing        m from=guangzhou
兰州大学
;
proc print;
run;

8、\修饰符。\修饰符。表示行指针跳到当前行下一行开始位置(与#2等同);如
data user;
a=15;
input name & $13. +4 addr :$10. @'from=' from $10. @(a*2) sex $ \ school  $20. ;
datalines;
xiao shucheng  ----chongqing f from=chengdu
重庆大学
liu ming  ----nanjing        m from=guangzhou
兰州大学
;
proc print;
run;

您可以选择一种方式赞助本站