全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1923 2
2014-08-03
悬赏 20 个论坛币 已解决
有A1,A2...An相同变量与观测数目的数据集,分别对应着B1,B2,Bn数据集。
A类数据集如下
data a1;
input a b c ;
cards;
2 7 8
3 2 6
8 7 3
9 0 1
run;

1、现在要判断c的累计值在哪一行会大于10(只保留开始大于10的那一行),把所有A类数据集大于10的那一行输出到一个数据集,标识出是哪一个数据集,并注明是哪一行。
2、给定一个数值10,对A类数据集进行检测,如果Ai的c变量前两行大于10,则保留对应的Bi数据集,否则删除Bi。并且把Ai满足条件的行进行汇总。(刚好大与10的)。

谢谢

最佳答案

learsaas 查看完整内容

第一问: %macro a; data result;set a1;length id $20 obs 8;stop;run; %do i=1 %to n; data temp;set a&i;s+c;if s>10 then do;id="a&i";obs=_n_;output;stop;end;drop s;run; proc append base=result data=temp;run; %end; %men a;%a; 第二问: %macro b; %do i=1 %to n; data _null_;set a&i(obs=2) end=last;if c
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-8-3 07:48:51
第一问:
%macro a;
data result;set a1;length id $20 obs 8;stop;run;
%do i=1 %to n;
data temp;set a&i;s+c;if s>10 then do;id="a&i";obs=_n_;output;stop;end;drop s;run;
proc append base=result data=temp;run;
%end;
%men a;%a;
第二问:
%macro b;
%do i=1 %to n;
data _null_;set a&i(obs=2) end=last;if c<=10 then do;call execute("proc delete data=b&i;run;");stop;end;if last then 汇总;run;
%end;
%mend b;
%b
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-3 10:29:22
你说的汇总不是很明白,所以写了伪代码。手机写代码太累了,我以后还是直接给算法,不写程序了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群