如何在SAS中为已创建的数据集添加新观察?例如,如果我有变量'x'和'y'的数据集'dataX',我想添加新的观察值,乘以两个 观察数n,我该怎么办?
dataX:
x y
1 1
1 21
2 3
我想创建:
dataX:
x y
1 1
1 21
2 3
10 210
观察数4乘以观察数2的10。
答案 0 :(得分:4)
以下是一种方法:
data dataX;
input x y;
datalines;
1 1
1 21
2 3
run;
/* Create a new observation into temp data set */
data _addRec;
set dataX(firstobs=2); /* Get observation 2 */
x = x * 10; /* Multiply each by 10 */
y = y * 10;
output; /* Output new observation */
stop;
run;
/* Add new obs to original data set */
proc append base=dataX data=_addRec;
run;
/* Delete the temp data set (to be safe) */
proc delete data=_addRec;
run;
答案 1 :(得分:4)
data a ;
do kk=1 to 5 ;
output ;
end ;
run;
data a2 ;
kk=999 ;
output ;
run;
data a; set a a2 ;run ;
proc print data=a ;run ;
结果: SAS系统1
OBS kk
1 1
2 2
3 3
4 4
5 5
6 999
答案 2 :(得分:4)
data X;
input x y;
datalines;
1 1
1 21
2 3
;
run;
data X ;
set X end=eof;
if eof then do;
output;
x=10 ;y=210;
end;
output;
run;
答案 3 :(得分:0)
您可以使用宏来获得所需的结果:
写一个宏,它将首先读取DataSet
,当_n_=2
时,它会将x和y乘以10。
之后创建另一个DataSet
,其中仅包含您的多重值,请说x'=10x
和y'=10y
。
将DataSet
传递给另一个宏,该宏将设置原始数据集和新创建的数据集。
逻辑是您必须创建另一个值为10x
和10y
的数据集,然后再设置之前的数据集。
我希望这会有所帮助!