S*****A 发帖数: 44 | 1 有a,b,c,三个变量,然后求b的和 group by a,但是只要最前面5个观察日期的和,c
是观察日期。因为每个a会有几十个观察日期,只要求每个前五个的和,该怎么写code
呐?而且s1, s2, s3 的观察日期又是不一致的。
a b c
s1 v1 day1
s1 v2 day2
s1 v3 day3
s1 v4 day4
s1 v5 day5
s1 v6 day6
s1 v7 day7
.
.
s2 v1 d1'
s2 v5 d5'
...... |
s******r 发帖数: 1524 | 2 记不太清楚了,google proc rank.
code
【在 S*****A 的大作中提到】 : 有a,b,c,三个变量,然后求b的和 group by a,但是只要最前面5个观察日期的和,c : 是观察日期。因为每个a会有几十个观察日期,只要求每个前五个的和,该怎么写code : 呐?而且s1, s2, s3 的观察日期又是不一致的。 : a b c : s1 v1 day1 : s1 v2 day2 : s1 v3 day3 : s1 v4 day4 : s1 v5 day5 : s1 v6 day6
|
S*****A 发帖数: 44 | 3
好感谢阿!!
用proc rank多个顺序的变量,然后在加就可以了~
proc sort data=new ;
by a;
run;
proc rank data=new out=new_sum;
by a;
var c;
ranks crank;
run;
proc sql;
create table new_s as
select a, b, c, sum(b) as b_sum from
new_sum
where crank<= 5
group by a;
quit;
proc sql;
alter table new_s
drop crank;
quit;
【在 s******r 的大作中提到】 : 记不太清楚了,google proc rank. : : code
|
g**a 发帖数: 2129 | 4 data one;
input a $ b c mmddyy10.;
datalines;
s1 10 02/16/2010
s1 20 02/10/2010
s1 30 01/16/2010
s1 40 04/16/2010
s1 50 02/21/2010
s1 60 02/28/2010
s1 70 03/16/2010
s2 110 02/16/2010
s2 120 02/10/2010
s2 130 01/16/2010
s2 140 04/16/2010
s2 150 02/21/2010
s2 160 02/12/2010
s2 170 03/16/2010
s2 180 02/06/2010
s2 190 02/08/2010
s3 210 02/16/2010
s3 220 02/10/2010
s3 230 01/16/2010
s3 240 04/16/2010
s3 250 02/21/2010
s3 260 02/19/2010
;
run;
proc sort data=one;
by a c;
run;
proc print data=one;
run; |
s******r 发帖数: 1524 | 5 be careful if you have records tie at rank 5.
【在 S*****A 的大作中提到】 : : 好感谢阿!! : 用proc rank多个顺序的变量,然后在加就可以了~ : proc sort data=new ; : by a; : run; : proc rank data=new out=new_sum; : by a; : var c; : ranks crank;
|
S******y 发帖数: 1123 | 6 #Python2.5 - sum b by var - a (only for top 5 dates)
#input format like this (see below).
'''
s1 10 20100216
s1 20 20100210
'''
in_file = '_five.txt'
f=open(in_file ,'r')
ctr=0
my_var_a = ''
d={}
sumx = 0
for line in f:
line = line.rstrip('\n')
a, b, datex = line.split('\t')
if a != my_var_a and my_var_a!= '':
for index, item in enumerate(sorted(d.keys())):
sumx += float(d[item])
if index ==4:
break
print my |