SAS中文论坛

标题: 如何复制数据集中的某一行 [打印本页]

作者: shiyiming    时间: 2011-6-19 10:55
标题: 如何复制数据集中的某一行
比如说有以下数据集:
V1    V2    V3  
1       5     6
2       5     8
5       3     8

如何在原来这个数据集中多加V2=5的这些行,从而变成:
V1    V2    V3  
1       5     6
2       5     8
1       5     6
2       5     8
5       3     8
作者: shiyiming    时间: 2011-6-19 21:59
标题: Re: 如何复制数据集中的某一行
一个简单的方法,可以新生成一个只有V2=5的观测值,然后和原来的数据集合并一下。

data new;
  set old;
  if v2=5 then output;
run;
data new1;
  set new old;
run;
之前可以对两个数据集以V2变量进行排序先,按要求显示顺序。
作者: shiyiming    时间: 2011-6-19 22:58
标题: Re: 如何复制数据集中的某一行
[code:zw76n0bb]data a b;
        input V1 V2 V3;
        if v2=5 then output a;else output b;
        datalines;
        1 5 6
        2 5 8
        5 3 8
;
run;

data c;
        set a a b;
run;[/code:zw76n0bb]
作者: shiyiming    时间: 2011-6-19 23:07
标题: Re: 如何复制数据集中的某一行
data ds;
   input V1 V2 V3;
   output;
   if v2=5 then output;
   datalines;
   1 5 6
   2 5 8
   5 3 8
;
run;
作者: shiyiming    时间: 2011-6-20 09:02
标题: Re: 如何复制数据集中的某一行
先output出来,然后根据你的条件再output出来就可以了。
作者: shiyiming    时间: 2011-6-21 05:28
标题: Re: 如何复制数据集中的某一行
[quote="laqiqi":1qlk2qxw]一个简单的方法,可以新生成一个只有V2=5的观测值,然后和原来的数据集合并一下。

data new;
  set old;
  if v2=5 then output;
run;
data new1;
  set new old;
run;
之前可以对两个数据集以V2变量进行排序先,按要求显示顺序。[/quote:1qlk2qxw]

这个方法很好。也可以简化一下:

[code:1qlk2qxw]data new1;
  set old(where =(v2=5)) old;
run;[/code:1qlk2qxw]
作者: shiyiming    时间: 2011-6-23 16:35
标题: Re: 如何复制数据集中的某一行
明白啦,谢谢各位啊!




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2