SAS中文论坛
标题:
如何在一个数据集中插入观测?谢谢!
[打印本页]
作者:
shiyiming
时间:
2008-1-23 20:03
标题:
如何在一个数据集中插入观测?谢谢!
已有数据集a,有两个变量x和y,想在特定位置插入一些观测,比如说在第15个观测和16个观测中间插入一个观测,插入的观测成为新的第16个观测,后面的观测依次延后。该如何写程序呢?谢谢指教!
作者:
shiyiming
时间:
2008-1-24 10:06
标题:
Re: 如何在一个数据集中插入观测?谢谢!
在我的印象里,好象SAS数据集不能够在中间插入,除非用Data step 或proc SQL重新生成一下,或者你把新的观测append到后面。
作者:
shiyiming
时间:
2008-1-24 13:34
标题:
Re: 如何在一个数据集中插入观测?谢谢!
先谢谢了,偶搜索网页的时候看到说SQL可以插入行,不知道这个跟我说的是不是一种插入
作者:
shiyiming
时间:
2008-1-26 12:43
标题:
Re: 如何在一个数据集中插入观测?谢谢!
[code:2n4ygjf5]
data result;
set a;
output;
if _n_=15 then do;
x=.;
y=.;
output;
end;
run;
[/code:2n4ygjf5]
作者:
shiyiming
时间:
2008-1-28 14:40
标题:
Re: 如何在一个数据集中插入观测?谢谢!
楼上给的程序是错的,执行的结果只是把第五个观测值替换成了missing value。
作者:
shiyiming
时间:
2008-1-28 21:10
标题:
Re: 如何在一个数据集中插入观测?谢谢!
我测试下来没问题!
我这里x=.,y=.故意没写值(要插什么值自己写,我是随便写了.,关键是看楼主自己要插什么值),
作者:
shiyiming
时间:
2008-1-28 21:50
标题:
Re: 如何在一个数据集中插入观测?谢谢!
我运行了下是对的呀
作者:
shiyiming
时间:
2008-1-29 09:08
标题:
Re: 如何在一个数据集中插入观测?谢谢!
我也觉得逻辑是正确的,符合楼主的原始需求。
只不过可以继续探讨一下,如果一个很大的dataseta采用set语句+output语句来插入一条记录,performance肯定很成问题。能不能考虑用update语句?
作者:
shiyiming
时间:
2008-1-31 13:58
标题:
Re: 如何在一个数据集中插入观测?谢谢!
update语句确实得好好研究一下,
以前听说update语句在大数据集时效果不太好,
但具体也没怎么用过,
希望能探讨一下
作者:
shiyiming
时间:
2008-1-31 21:01
标题:
Re: 如何在一个数据集中插入观测?谢谢!
楼上说的很对,我以前用过update效率很慢。
作者:
shiyiming
时间:
2008-2-1 15:47
标题:
Re: 如何在一个数据集中插入观测?谢谢!
给个例子,你可以尝试一下:
[code:dvcm71vp]data class;
set sashelp.class;
if _n_<16 then id=_n_;
else id=_n_+1;
run;
data a;
set sashelp.class;
if _n_=10;
name='I';
id=16;
run;
data b(drop=id);
update class a;
by id;
run;[/code:dvcm71vp]
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2