data test;
input r count;
do _n_=1 to count;
output;
end;
datalines;
1 3
2 5
;
run;
http://www.pinggu.org/bbs/thread-880619-1-1.html
原问题
其实这个程序很好很有意思,值得去思考data步里面读取数据的机制
当程序编译的时候,读到INPUT语句结束之后,开始读入第一调观测 就是 1 3
然后执行 DO循环,因为这个时候COUNT=3是明确了,也就是循环3次,并且输出;
输出完之后继续读入第二条观测,就是2 5 重复第一个步骤。
在这里我用朱老师书上对DATA的处理流程
编译SAS语句,包括语法检查
建立 输入缓冲区、程序数据向量PDV、描述信息
开始数据步语句、反复计数
设定PDV的变量值为缺失
数据读入语句,如果有可以读入的数据,则进入下一步
读入一条数据记录
执行其他的可执行的语句
写入一个观测到数据集中
后面四步循环判断
在这里注意几点:
1.PDV中的变量值开始为缺失的,所以在一个数据集临时一个新变量时,最好retain
2.读入一条数据记录,然后执行对这一条数据记录的可以执行的其他语句(这些语句包括对这条记录里面数据的提取、处理等等)