楼主: 维兹
5139 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
拉您进交流群
GMT+8, 2025-12-29 14:21