SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 630|回复: 3
打印 上一主题 下一主题

数据集观测的选择问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-6-18 00:26:23 | 只看该作者

数据集观测的选择问题

有这样已存在的数据集(第一列是自动编号,第二列是观测值)
1  465
2  486
3  487
4  354
5  145
6  463
7  125
8  453
9  478
10 125
...  ...
我想创建一个数据集,有两个观测x,y.使得前面数据集的第一个观测赋值给x,第二个观测赋值给y,第三个观测赋值给x,第四个观测赋值给y,依次类推(即奇数观测赋值给x,偶数观测赋值给y)即得下面的数据集
x y
465 486
487 354
145 463
125 453
478 125
请高手指点,非常感谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-6-18 09:22:32 | 只看该作者

Re: 数据集观测的选择问题

你可以使用如下CODE,试试:

[code:b2yimgn3]
data aa;   
        input x $ 1-7;
        Y= input(scan(x,2,' '),best.);
cards;
1 465
2 486
3 487
4 354
5 145
6 463
7 125
8 453
9 478
10 125
;
run;

proc print;
run;

data bb (rename=(y=a))  cc(rename=(y=b));
   set aa;
   if      mod(_n_,2)=1 then output bb;
   else if mod(_n_,2)=0 then output cc;
run;

data bb;
   set bb;
   n=_n_;
run;

data cc;
        set cc;
        n=_n_;
run;


data dd(keep=a b);
   merge bb cc;
   by n;
run;


proc print data=dd;
run;


[/code:b2yimgn3]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-6-18 12:56:47 | 只看该作者

Re: 数据集观测的选择问题

非常感谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-6-20 09:59:58 | 只看该作者

Re: 数据集观测的选择问题

data b;
do i=1 to tot;
set a nobs=tot point=i;
if mod(a,2)  then x=b;else y=b;
if i=tot and mod(tot,2) then y=.;  /*假设有奇数行,则最后一个Y置为缺失*/
if mod(i,2)=0 or (i=tot and mod(tot,2)) then output; /*两个一组输出或者是有奇数行,则输出最后一行*/
end;
stop;
keep x y;
run;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 05:11 , Processed in 0.069286 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表