楼主: 滞点
4067 19

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

  • 1关注
  • 0粉丝

讲师

2%

还不是VIP/贵宾

-

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

楼主
滞点 发表于 2017-12-17 21:15:03 |AI写论文
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
拉您进交流群
GMT+8, 2025-12-21 19:47