由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - sas code 求教
相关主题
发包子求助SAS code求SAS code
[提问]怎样sort这个dataset?请教一个看起来挺简单但我怎么也弄不出来的sas程序
请教一个transpose的问题,在线等SAS 问题求助
sas adv 63题 52which route in SAS is faster?
求教一个简单的data step 牛肉包请教 2 道SAS Adv 真题
用 sas 分组问题急!SAS adv的一道题,谢谢!
大数据sort可以用tagsort请教SAS ADV一道题!
How to Macro it in SAS?sas重复计数
相关话题的讨论汇总
话题: seq话题: 10话题: sumunit话题: unit话题: 103
进入Statistics版参与讨论
1 (共1页)
x****i
发帖数: 400
1
data 如下,
ID seq unit
100 1 10
100 2 10
101 1 10
101 1 20
103 1 10
103 2 10
104 1 10
104 1 20
现在要保留每一个ID unique的seq。101 和 104都有两个相同的seq,这样要add unit
together。
ID seq unit
100 1 10
100 2 10
101 1 30
103 1 10
103 2 10
104 1 30
proc sql里面有没有conditional sum的办法呢?尝试了半天没有弄出来。还有其他简
洁的办法吗?
m*******g
发帖数: 3044
2
?? group, sum should be working
w****a
发帖数: 114
3
proc sql;
create s_data as select id,seq,sum(unit) as s_unit
from data group by id,seq order by id,seq;
quit;
k*****u
发帖数: 1688
4
options formdlim='-';
data test;
input ID seq unit;
cards;
100 1 10
100 2 10
101 1 10
101 1 20
103 1 10
103 2 10
104 1 10
104 1 20
;
run;
proc sort data=test;
by id seq;
run;
data want (keep=id seq sumunit);
set test;
by id seq;
if first.id or first.seq then sumunit=unit;
else sumunit+unit;
if last.id or last.seq then output;
run;
proc print data=want;
run;
w*****8
发帖数: 395
5
data test;
input ID seq unit;
fakeID = id||'_'||seq;
cards;
100 1 10
100 2 10
101 1 10
101 1 20
103 1 10
103 2 10
104 1 10
104 1 20
;
run;
proc sort data=test;
by fakeID;
run;
data want (keep=id seq sumunit);
set test;
by fakeID;
if first.fakeID then sumunit=unit;
else sumunit+unit;
if last.id;
run;
proc print data=want;
run;

【在 k*****u 的大作中提到】
: options formdlim='-';
: data test;
: input ID seq unit;
: cards;
: 100 1 10
: 100 2 10
: 101 1 10
: 101 1 20
: 103 1 10
: 103 2 10

w*****8
发帖数: 395
6
....
data want (keep=id seq sumunit);
set test;
by fakeID;
if first.fakeID then sumunit=unit;
else sumunit+unit;
if last.id; <-- should be " if last.fakeID; "
run;
...

【在 w*****8 的大作中提到】
: data test;
: input ID seq unit;
: fakeID = id||'_'||seq;
: cards;
: 100 1 10
: 100 2 10
: 101 1 10
: 101 1 20
: 103 1 10
: 103 2 10

w*****8
发帖数: 395
7
data test;
input ID seq unit;
cards;
100 1 10
100 2 10
101 1 10
101 1 20
103 1 10
103 2 10
104 1 10
104 1 20
;
run;
proc sort;by id seq;run;
proc means;
var unit;
by id seq;
output out=testSum sum=sumUnit;
run;
proc print data=testSum;run;

【在 w*****8 的大作中提到】
: ....
: data want (keep=id seq sumunit);
: set test;
: by fakeID;
: if first.fakeID then sumunit=unit;
: else sumunit+unit;
: if last.id; <-- should be " if last.fakeID; "
: run;
: ...

x****i
发帖数: 400
8
4th floor is more general. If there are other variables with different
values, proc sql can not summarize.
1 (共1页)
进入Statistics版参与讨论
相关主题
sas重复计数求教一个简单的data step 牛肉包
请问一个correlation和regression的问题用 sas 分组问题
[合集] 说一个proc sort的很简单却总有人错的问题大数据sort可以用tagsort
SAS memory managementHow to Macro it in SAS?
发包子求助SAS code求SAS code
[提问]怎样sort这个dataset?请教一个看起来挺简单但我怎么也弄不出来的sas程序
请教一个transpose的问题,在线等SAS 问题求助
sas adv 63题 52which route in SAS is faster?
相关话题的讨论汇总
话题: seq话题: 10话题: sumunit话题: unit话题: 103