楼主: 维兹
4708 16

sas可以通过查找编号相同的列将值相加么 [推广有奖]

11
letsgoaway 发表于 2015-5-25 20:17:30 |只看作者 |坛友微信交流群
舍身卫道 发表于 2015-5-25 15:03
data  test;
length cp_bm $16. xsl 8.;
input cp_bm xsl;
第一介if那里是不是flag=0才对,不然好的像多加了一次第一个。

使用道具

12
舍身卫道 发表于 2015-5-25 21:04:17 |只看作者 |坛友微信交流群
已经改过了

使用道具

13
舍身卫道 发表于 2015-5-25 21:09:11 |只看作者 |坛友微信交流群
我没有你的源数据集没法测试,你用下面修改之后程序在测试一下
data test_1;
do i=1 to 24;
if i<10 then n=compress("0"||i);
else n=compress(i);
output;
end;
keep n;
run;


data _null_;
set test_1 end=last;
call symput(compress("F_name"||(_n_)),compress(n));
if last then call symput("sum",compress(_N_));
run;

%macro freq();
%do i=1 %to &sum.;
proc sort data=new_&&F_name&i.. out=test_&&F_name&i..;
by enb_id;
run;

data data_&&F_name&i..;
set test_&&F_name&i..;
by enb_id;
if first.enb_id then
do;
flag1=0;
flag2=0;
end;
flag1+var6;
flag2+var7;
if last.enb_id then output;
drop var6 var7;
run;
%end;
%mend;
%freq();

使用道具

14
维兹 发表于 2015-5-25 21:45:50 |只看作者 |坛友微信交流群
舍身卫道 发表于 2015-5-25 21:09
我没有你的源数据集没法测试,你用下面修改之后程序在测试一下
data test_1;
do i=1 to 24;
可以了~谢谢     
为什么这里%do i=1 %to &sum
不能像原来一样写成%do i=1 %to99啊

使用道具

15
维兹 发表于 2015-5-25 21:47:13 |只看作者 |坛友微信交流群
letsgoaway 发表于 2015-5-25 20:17
第一介if那里是不是flag=0才对,不然好的像多加了一次第一个。
对的 后来更正过了哈 谢谢

使用道具

16
舍身卫道 发表于 2015-5-25 22:29:01 |只看作者 |坛友微信交流群
维兹 发表于 2015-5-25 21:45
可以了~谢谢     
为什么这里%do i=1 %to &sum
不能像原来一样写成%do i=1 %to99啊
因为原来的test_1 数据集中循环生成是从1到99,现在你的程序改成从1到24,所以下面的程序也要改

使用道具

17
维兹 发表于 2015-5-26 10:59:10 |只看作者 |坛友微信交流群
舍身卫道 发表于 2015-5-25 22:29
因为原来的test_1 数据集中循环生成是从1到99,现在你的程序改成从1到24,所以下面的程序也要改
谢谢你啦~~

使用道具

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

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

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

GMT+8, 2024-5-1 19:51