如何在SAS中为已创建的数据集添加新观察?

时间:2013-02-04 10:34:33

标签: sas

如何在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。

4 个答案:

答案 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)

您可以使用宏来获得所需的结果:

  1. 写一个宏,它将首先读取DataSet,当_n_=2时,它会将x和y乘以10。

  2. 之后创建另一个DataSet,其中仅包含您的多重值,请说x'=10xy'=10y

  3. DataSet传递给另一个宏,该宏将设置原始数据集和新创建的数据集。

  4. 逻辑是您必须创建另一个值为10x10y的数据集,然后再设置之前的数据集。

    我希望这会有所帮助!