楼主: ivylee_777
1945 2

[问答] 挑选数据中符合条件的值 [推广有奖]

  • 23关注
  • 4粉丝

硕士生

99%

还不是VIP/贵宾

-

威望
0
论坛币
1631 个
通用积分
1.0600
学术水平
0 点
热心指数
0 点
信用等级
5 点
经验
601 点
帖子
168
精华
0
在线时间
239 小时
注册时间
2005-7-6
最后登录
2017-3-17

楼主
ivylee_777 发表于 2013-11-28 04:15:11 |AI写论文
5论坛币
bbs.xlsx (31.33 KB)
附件中是我的问题需要用到的数据,一共768个观测值,16个一组,也就是1-16第一组,17-32第二组,。。。,753-768第48组,总共48组,每一组都有16个BID1,16个BID2,16个BID3,我想加入三列,第一列是“posted BID1”,数值是BID1各组第二大的数,具体说,“posted BID1”头16个数是第一组BID1中第二大的数,第二个16个数是第二组BID1中第二大的数。。。加入的第二列“posted BID2”和第三列“posted BID3”与加入的第一列类似,只不过我想要BID2和BID3中每组第二大的数。下面图片中我以第一组为例。最后我想每一组都能将第二大的数找出,并生成相应的列。不知道SAS可不可以做。希望会的同学指教,十分感谢!!
bbs.jpg



bbs.jpg (61.56 KB)

bbs.jpg

最佳答案

wwang111 查看完整内容

data bbs1; set bbs nobs=nobs; retain grp; if _n_=1 then grp=1; do i=1 to nobs; if ((_n_-1)/16)=i then grp+1; end; drop i; run; proc transpose data=bbs1 out=bbs2(drop=_label_); by notsorted grp; var bid1-bid3; run; data bbs3; set bbs2; call sortn (of col16-col1); array var[16] col1-col16; do i=1 to 15; if var ne var then do; max2=var; leave; en ...
关键词:Posted post 我的问题 bid POS posted 图片

回帖推荐

wwang111 发表于2楼  查看完整内容

data bbs1; set bbs nobs=nobs; retain grp; if _n_=1 then grp=1; do i=1 to nobs; if ((_n_-1)/16)=i then grp+1; end; drop i; run; proc transpose data=bbs1 out=bbs2(drop=_label_); by notsorted grp; var bid1-bid3; run; data bbs3; set bbs2; call sortn (of col16-col1); array var[16] col1-col16; do i=1 to 15; if var ne var then do; max2=var; leave; en ...

沙发
wwang111 发表于 2013-11-28 04:15:12
data bbs1;
set bbs nobs=nobs;
retain grp;
if _n_=1 then grp=1;
do i=1 to nobs;
if ((_n_-1)/16)=i then grp+1;
end;
drop i;
run;

proc transpose data=bbs1 out=bbs2(drop=_label_);
by notsorted grp;
var bid1-bid3;
run;

data bbs3;
set bbs2;
call sortn (of col16-col1);
array var[16] col1-col16;
do i=1 to 15;
   if var[i] ne var[i+1] then do;
     max2=var[i+1];
     leave;
   end;
end;
keep grp _name_ max2;
run;
proc transpose data =bbs3 out=bbs4(drop=_name_) prefix=post_;
by notsorted grp;
var max2;
id _name_;
run;

proc sql;
create table wanted(drop=grp) as
select a.*, post_bid1,post_bid2,post_bid3
from bbs1 a join bbs4 b
on a.grp=b.grp;
quit;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ivylee_777 + 1 + 1 + 1 热心帮助其他会员,答案清晰易懂,很用心,.

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

只有一个罗纳尔多

藤椅
ivylee_777 发表于 2013-11-28 07:52:59
自己顶一下,盼望高手指点,十分感谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 03:56