如何向 SAS 中已创建的数据集添加新观察?例如,如果我有带有变量“x”和“y”的数据集“dataX”,并且我想添加新的观测值,该观测值乘以观测数 n 的 2,我该怎么做?
数据X:
xy
1 1
1 21
2 3
我想创建:
数据X:
xy
1 1
1 21
2 3
10 210
其中第 4 个观察值是第 2 个观察值乘以 10。
如何向 SAS 中已创建的数据集添加新观察?例如,如果我有带有变量“x”和“y”的数据集“dataX”,并且我想添加新的观测值,该观测值乘以观测数 n 的 2,我该怎么做?
数据X:
xy
1 1
1 21
2 3
我想创建:
数据X:
xy
1 1
1 21
2 3
10 210
其中第 4 个观察值是第 2 个观察值乘以 10。
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;
这是执行此操作的一种方法:
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;
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
您可以使用宏来获得您想要的结果:
编写一个宏,它将首先读取DataSet
,何时_n_=2
将 x 和 y 乘以 10。
之后创建另一个DataSet
只保留你的乘法价值的说x'=10x
and y'=10y
。
传入DataSet
另一个宏,它将设置原始数据集和新创建的数据集。
逻辑是您必须创建另一个具有值的数据集,10x
然后再使用10y
先前的数据集进行设置。
我希望这个能帮上忙 !