楼主: 最爱神起
7773 10

Sas怎么按照季度对数据进行求和 [推广有奖]

  • 0关注
  • 0粉丝

本科生

65%

还不是VIP/贵宾

-

威望
0
论坛币
893 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1278 点
帖子
117
精华
0
在线时间
70 小时
注册时间
2010-4-6
最后登录
2018-1-17

楼主
最爱神起 发表于 2013-5-28 15:11:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如产生数据的时间是2003.06.01,数据产生在2003年到2012年之间,而我要按照季度,求这几年各个季度的数据总和,这样,应该如何来设计程序?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:设计程序 如何 设计程序

沙发
boe 发表于 2013-5-28 15:17:56
不太明白你的需求,能否用数据举例说明一下?
Gorgeous girl , I love !

藤椅
最爱神起 发表于 2013-5-28 16:02:53
boe 发表于 2013-5-28 15:17
不太明白你的需求,能否用数据举例说明一下?
date                       net
2012/11/17        2000
2011/3/15                       1859.99976
2012/9/25                         2000
2012/11/24        2000
2012/10/2                       7628.355
2012/5/5                         7200
2012/11/26        500
2012/7/18                       7000
2011/11/6            1859.99656
2012/6/27                   100
2012/12/28        2000
2011/10/28        288.2988034
2012/3/20                         53940
2012/8/22                         17683.2
2012/11/23        9900
2012/4/10                     6274.71
2011/5/8                           2000
2012/7/6                        19530
2012/9/19                        52200
2012/11/28        21325
2012/8/5                         9286
2012/4/1                           930
2012/6/14                        2001
2012/6/15                        1395
2012/6/21                    30150
2012/3/21                       100
2012/12/26        1990
2012/1/16                      62000
2012/3/21                      11500
2010/10/28        1000
以上面的数据为例,就是把net数据按照季度来求和,求2003年1季度的总和,2003年2季度的总和.......直至到2012年4季度的总和

板凳
scarfacetony 发表于 2013-5-28 16:34:58
  1. data test;
  2.         input date yymmdd10. data;
  3.         format date yymmdd10.;
  4.         cards;
  5. 2012/11/17        2000
  6. 2011/3/15                       1859.99976
  7. 2012/9/25                         2000
  8. 2012/11/24        2000
  9. 2012/10/2                       7628.355
  10. 2012/5/5                         7200
  11. 2012/11/26        500
  12. 2012/7/18                       7000
  13. 2011/11/6            1859.99656
  14. 2012/6/27                   100
  15. 2012/12/28        2000
  16. 2011/10/28        288.2988034
  17. 2012/3/20                         53940
  18. 2012/8/22                         17683.2
  19. 2012/11/23        9900
  20. 2012/4/10                     6274.71
  21. 2011/5/8                           2000
  22. 2012/7/6                        19530
  23. 2012/9/19                        52200
  24. 2012/11/28        21325
  25. 2012/8/5                         9286
  26. 2012/4/1                           930
  27. 2012/6/14                        2001
  28. 2012/6/15                        1395
  29. 2012/6/21                    30150
  30. 2012/3/21                       100
  31. 2012/12/26        1990
  32. 2012/1/16                      62000
  33. 2012/3/21                      11500
  34. 2010/10/28        1000
  35. ;
  36. run;

  37. data test1;
  38.         set test;
  39.         qtr=catx('|',trim(year(date)),trim(qtr(date)));
  40. run;

  41. proc summary data=test1 nway;
  42.         class qtr;
  43.         var data;
  44.         output out=rst(drop=_freq_ _type_) sum=;
  45. run;
复制代码
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

报纸
最爱神起 发表于 2013-5-28 16:35:39
数据量大概快2万条,怎么设置一个程序,来实现对每一个季度的求和,能不能设一个循环语句,步长为3个月,从而达到目的?

地板
最爱神起 发表于 2013-5-28 16:55:33
scarfacetony 发表于 2013-5-28 16:34
谢谢,但是还有其他的变量,一共有10个变量,我只截取了这两个变量的数值,但是我想在一个表里显示出所有的变量及所求出的和值,请问这样该如何操作?

7
scarfacetony 发表于 2013-5-28 16:58:45
最爱神起 发表于 2013-5-28 16:55
谢谢,但是还有其他的变量,一共有10个变量,我只截取了这两个变量的数值,但是我想在一个表里显示出所有 ...
把第45行代码改成:

        var _numeric_;
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

8
boe 发表于 2013-5-28 17:02:02
仅供参考,多变量的话,proc sql 往后加sum(*)就可以,data步用数组。
  1. data t1;
  2.   input date:yymmdd10. net;
  3.   year=year(date);
  4.   quarter=qtr(date);
  5.   format date yymmdd10.;
  6. datalines;
  7. 2012/11/17        2000
  8. 2011/3/15                       1859.99976
  9. 2012/9/25                         2000
  10. 2012/11/24        2000
  11. 2012/10/2                       7628.355
  12. 2012/5/5                         7200
  13. 2012/11/26        500
  14. 2012/7/18                       7000
  15. 2011/11/6            1859.99656
  16. 2012/6/27                   100
  17. 2012/12/28        2000
  18. 2011/10/28        288.2988034
  19. 2012/3/20                         53940
  20. 2012/8/22                         17683.2
  21. 2012/11/23        9900
  22. 2012/4/10                     6274.71
  23. 2011/5/8                           2000
  24. 2012/7/6                        19530
  25. 2012/9/19                        52200
  26. 2012/11/28        21325
  27. 2012/8/5                         9286
  28. 2012/4/1                           930
  29. 2012/6/14                        2001
  30. 2012/6/15                        1395
  31. 2012/6/21                    30150
  32. 2012/3/21                       100
  33. 2012/12/26        1990
  34. 2012/1/16                      62000
  35. 2012/3/21                      11500
  36. 2010/10/28        1000
  37. ;
  38. run;

  39. /*1*/
  40. proc sql;
  41.   create table t2 as
  42.   select t1.*,sum(net) as sum_net
  43.   from t1
  44.   group by year,quarter;
  45. quit;

  46. /*2*/
  47. proc sort data=t1;
  48.   by year quarter;
  49. run;
  50. data t3;
  51.   set t1;
  52.   by year quarter;
  53.   if first.quarter then sum_net=0;
  54.   sum_net + net;
  55.   if last.quarter then output;
  56.   drop date net;
  57. run;
复制代码
Gorgeous girl , I love !

9
邓贵大 发表于 2013-5-28 20:25:30
http://support.sas.com/documenta ... .htm#a000201247.htm
there is a format for quarters so it's not necessary to recode the data.
Be still, my soul: the hour is hastening on
When we shall be forever with the Lord.
When disappointment, grief and fear are gone,
Sorrow forgot, love's purest joys restored.

10
boe 发表于 2013-5-28 20:52:41
邓贵大 发表于 2013-5-28 20:25
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000201247.htm
the ...
  1. input date:yymmdd10. net;
  2.   format date yyq.;
复制代码
大牛,是不是这样?
谢谢!
以后有问题多请教你啊!
Gorgeous girl , I love !

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 04:01