楼主: akalius
1739 2

求解一个通过判断数据集里面变量来操作数据集的程序 [推广有奖]

  • 10关注
  • 3粉丝

讲师

48%

还不是VIP/贵宾

-

威望
0
论坛币
4168 个
通用积分
9.1543
学术水平
4 点
热心指数
6 点
信用等级
6 点
经验
7832 点
帖子
261
精华
0
在线时间
605 小时
注册时间
2009-7-22
最后登录
2024-4-9

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
关键词:数据集 Input cards card Data 程序 检测
沙发
learsaas 发表于 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

使用道具

藤椅
learsaas 发表于 2014-8-3 10:29:22 |只看作者 |坛友微信交流群
你说的汇总不是很明白,所以写了伪代码。手机写代码太累了,我以后还是直接给算法,不写程序了。
已有 1 人评分论坛币 收起 理由
akalius + 5 精彩帖子

总评分: 论坛币 + 5   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 09:24