请选择 进入手机版 | 继续访问电脑版
1344 2

[有偿编程] sas 分组取均值 [推广有奖]

  • 0关注
  • 0粉丝

高中生

17%

还不是VIP/贵宾

-

威望
0
论坛币
265 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
172 点
帖子
7
精华
0
在线时间
36 小时
注册时间
2016-6-30
最后登录
2020-3-7

55论坛币
感谢帮忙,数据如附件,希望做到:从lon.lat 有数据开始,以id100为分组,取pm2_5的均值,即:lon,lat有数据起,id100=1的需要取pm2_5的均值,id100=2的取id100=1之后到2的pm2_5均值。
data.xlsx (78.45 KB)

比较急,感谢~~~~~

最佳答案

关键词:LAT
滞点 发表于 2018-3-23 22:39:59 |显示全部楼层 |坛友微信交流群
  1. DM log 'clear';
  2. Proc datasets library=work kill nolist;
  3. quit;

  4. PROC IMPORT OUT= WORK.XY
  5. DATAFILE= "C:\Users\Administrator\Desktop\arc\1B.csv";
  6. RUN;

  7. PROC IMPORT OUT= WORK.pm
  8. DATAFILE= "C:\Users\Administrator\Desktop\arc\air\1B_pm.csv";
  9. RUN;
  10. PROC IMPORT OUT= WORK.xy_50
  11. DATAFILE= "C:\Users\Administrator\Desktop\arc\file\1B_50m.csv";
  12. RUN;
  13. PROC IMPORT OUT= WORK.xy_100
  14. DATAFILE= "C:\Users\Administrator\Desktop\arc\file\1B_100m.csv";
  15. RUN;
  16. data xy_100;     /*删除异常值*/
  17. set xy_100;
  18. if a100>10000 or a100=0 then delete;
  19. else output;
  20. run;
  21. data pm;
  22. set pm;
  23. timestamppm=time;
  24. /*put time=time8.;*/
  25. drop timestamp;
  26. idpm=_n_;
  27. run;
  28. data xy;
  29. set xy;
  30. timestampxy=time;
  31. /*put time=time8.;*/
  32. idxy=_n_;
  33. run;
  34. proc sql noprint;
  35. create table dimm as select min(time) as min,max(time) as max from pm;
  36. run;
  37. proc sql noprint;
  38. create table dumm as select min(time) as min,max(time) as max from xy;
  39. run;
  40. data x;
  41. set dimm;
  42. x=min;
  43. call symput("x",x);
  44. run;
  45. data y;
  46. set dumm;
  47. y=min;
  48. call symput("y",y);
  49. run;


  50. data have;
  51. merge Xy Xy_100 PM;
  52. by time;
  53. idhave=_n_;
  54. run;
  55. data have;
  56. set have;
  57. timestamp=time;
  58. *put time=time8.;
  59. run;



  60. data have;
  61. set have;
  62. if  timestamp<&y. then delete;
  63. run;


  64. data bb;   /*自动填充*/
  65. set have;
  66. run;
  67. proc sort data=bb;
  68. by descending time;
  69. run;
  70. data cc;
  71. set bb;
  72. retain price1;
  73. if id100^=. then price1=id100;
  74. if id100=. then id100=price1;
  75. run;
  76. proc sort data=cc;
  77. by time;
  78. run;

  79. proc sql noprint;
  80. create table ave as select distinct id100,avg(PM2_5) as PM2_5 from cc group by id100;
  81. run;
  82. data ave;
  83. set ave;
  84. if id100=. then delete;
  85. run;
  86. proc sort data=cc;
  87. by id100;
  88. run;
  89. data xy_50;
  90. set xy_50;
  91. a100=round(a50,100);
  92. run;
  93. data final;
  94. merge xy_100 ave;
  95. by id100;
  96. run;

  97. data final1;
  98. merge final xy_50;
  99. by a100;
  100. run;
  101. data final1;
  102. set final1;
  103. if a50=. then delete;
  104. drop a100 id100;
  105. run;
  106. data final1;
  107. set final1;
  108. *timestampxy=time;
  109. put time=time8.;
  110. run;

  111. PROC EXPORT DATA= WORK.final1
  112.             OUTFILE= "C:\Users\Administrator\Desktop\arc\xy_pm\1B_pm_50.csv"
  113.             DBMS=csv;
  114. RUN;
复制代码

使用道具

滞点 发表于 2018-3-23 22:41:37 |显示全部楼层 |坛友微信交流群
不太会,帮顶等待大神回复

使用道具

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

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

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

GMT+8, 2024-3-29 18:23