楼主: 滞点
3435 19

[有偿编程] 有一笔数据,希望做到每10笔取一个平均值,并输出到Excel中 [推广有奖]

  • 1关注
  • 0粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
1322 个
通用积分
5.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
43139 点
帖子
101
精华
0
在线时间
617 小时
注册时间
2015-7-27
最后登录
2024-4-18

50论坛币
如题,一笔数据为时间+数值,希望做到每10秒、30秒、1分钟就取一个平均值,并输出到Excel表格中~感谢帮忙


B资料 - 副本.xlsx (22.21 KB)
关键词:EXCEL xcel exce cel 平均值

回帖推荐

沙发
lovexialulu 发表于 2017-12-17 21:15:04 |只看作者 |坛友微信交流群
  1. data a;
  2. input Time $11. PM @ ;
  3. cards;
  4. 10:24:51 AM 4
  5. 10:24:52 AM        5
  6. 10:24:53 AM        6
  7. 10:24:54 AM        6
  8. 10:24:55 AM        5
  9. 10:24:56 AM        5
  10. 10:24:57 AM        4
  11. 10:24:58 AM        4
  12. 10:24:59 AM        4
  13. 10:25:00 AM        4
  14. 10:25:01 AM        4
  15. 10:25:02 AM        3
  16. 10:25:03 AM        3
  17. 10:25:04 AM        3
  18. 10:25:05 AM        3
  19. 10:25:06 AM        3
  20. ;
  21. run;

  22. data b;
  23. set a;
  24. tim=input(substr(time,1,8),time8.);
  25. proc sort;by tim pm;
  26. run;
  27. proc sql noprint;
  28. create table dimm as select min(tim) as min,max(tim) as max from b;
  29. run;

  30. data dumm;
  31. set dimm;
  32. n=ceil((max-min)/10);
  33. call symput("n",n);
  34. run;

  35. data c;
  36. set b;
  37. by tim pm;
  38. retain start;
  39. if _n_=1 then start=tim;
  40. do i=1 to &n.;
  41. if start+10*(i-1)<=tim<=start+10*i then oo=i;
  42. if start+30*(i-1)<=tim<=start+30*i then ooo=i;
  43. if start+60*(i-1)<=tim<=start+60*i then oooo=i;
  44. end;output;
  45. run;

  46. proc sql noprint;
  47. create table want10 as select distinct oo,avg(pm) as pp from c group by oo;
  48. create table want30 as select distinct ooo,avg(pm) as pp from c group by ooo;
  49. create table want60 as select distinct oooo,avg(pm) as pp from c group by oooo;
  50. run;
复制代码

使用道具

藤椅
hopezsh 在职认证  发表于 2017-12-17 22:18:30 |只看作者 |坛友微信交流群
这个还不简单,把数据看成一个列向量,写个条件语句就可以了,SQL、Matlab、R、stat等都可以实现这个功能!

使用道具

板凳
滞点 发表于 2017-12-17 22:30:55 |只看作者 |坛友微信交流群
hopezsh 发表于 2017-12-17 22:18
这个还不简单,把数据看成一个列向量,写个条件语句就可以了,SQL、Matlab、R、stat等都可以实现这个功能!
悬赏的原因就是希望能直接帮忙写好代码[shy]

使用道具

报纸
hopezsh 在职认证  发表于 2017-12-18 08:47:07 |只看作者 |坛友微信交流群
j=0;
k=1;
sum_X=0;

for i=1:size(X,2)  %向量列数

    sum_X=sum_X+X(i);

    if i==10+60*j
       mean_X(k)=sum_X/i;  % 均值
       k=k+1;   
    else if i==30+60*j
       mean_X(k)=sum_X/i;
       k=k+1;  
    else if i==60+60*j
       mean_X(k)=sum_X/i;
       k=k+1;  
       j=j+1;
    else
    sum_X=sumX+X(i);
    end

end

mean_X

使用道具

地板
滞点 发表于 2017-12-18 09:13:50 |只看作者 |坛友微信交流群
hopezsh 发表于 2017-12-18 08:47
j=0;
k=1;
sum_X=0;
您这个好像不是sas的代码吧[em19]

使用道具

7
hopezsh 在职认证  发表于 2017-12-18 09:17:32 |只看作者 |坛友微信交流群
Matlab程序

使用道具

8
滞点 发表于 2017-12-18 09:36:35 |只看作者 |坛友微信交流群
hopezsh 发表于 2017-12-18 09:17
Matlab程序
抱歉,我在sas专版发帖是想拿到sas的[em19]

使用道具

9
滞点 发表于 2017-12-18 11:32:08 |只看作者 |坛友微信交流群
lovexialulu 发表于 2017-12-18 10:57
您好,可否劳烦将Excel导入部分也加进去,感激不尽

使用道具

10
lovexialulu 发表于 2017-12-18 11:35:35 |只看作者 |坛友微信交流群
PROC IMPORT OUT= WORK.a
DATAFILE= "C:\Documents and Settings\Administrator\桌面\2008.xls"
DBMS=EXCEL REPLACE;
RANGE="Sheet1$";
GETNAMES=YES;
RUN;

使用道具

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

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

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

GMT+8, 2024-4-20 06:42