【问题标题】:How to add new observation to already created dataset in SAS?如何向 SAS 中已创建的数据集添加新观察?
【发布时间】:2014-06-05 21:24:30
【问题描述】:

如何向 SAS 中已创建的数据集添加新观察?例如,如果我有带有变量“x”和“y”的数据集“dataX”,并且我想添加新的观察值,它是乘以两个 观察数 n,我该怎么做?

数据X:
xy
1 1
1 21
2 3

我要创作:

数据X:
xy
1 1
1 21
2 3
10 210

其中第 4 个观察值是第 2 个观察值乘以 10。

【问题讨论】:

  • 目前还不完全清楚您要做什么,您能否提供一个示例来说明数据集之前和之后的样子

标签: sas


【解决方案1】:
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;

【讨论】:

  • 低质量帖子审查:请为建议的解决方案添加一些描述。出于审核原因,此答案的当前形式可能会被删除。
【解决方案2】:

这是一种方法:

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;

【讨论】:

  • 我意识到我需要的解决方案在放置在 do-loop 中时会起作用,你能告诉我在这种情况下的解决方案吗?
  • 什么样的“做循环”?你最好再问一个问题。给出清晰的描述,我相信你会得到答案。您可以参考这个问题,但前提是它与您的新问题相关。
【解决方案3】:
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

【讨论】:

    【解决方案4】:

    您可以使用宏来获得您想要的结果:

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

    2. 之后创建另一个DataSet,它只保存你的乘法值,比如说x'=10xy'=10y

    3. 在另一个宏中同时传递DataSet,这将设置原始数据集和新创建的数据集。

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

    我希望这会有所帮助!

    【讨论】:

    • 如何使用 4GL 做同样的事情?
    • 我认为除非有原因,否则应该避免使用宏——它们通常会增加不必要的复杂性。在这种情况下,只需使用常规数据步即可解决问题。
    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2014-08-06
    • 2013-04-28
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多