楼主: 滞点
3436 19

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

11
滞点 发表于 2017-12-18 13:56:56 |只看作者 |坛友微信交流群
lovexialulu 发表于 2017-12-18 11:35
PROC IMPORT OUT= WORK.a
DATAFILE= "C:\Documents and Settings\Administrator\桌面\2008.xls"
DBMS=EX ...
您好,我导入Excel后日志显示:
1    PROC IMPORT OUT= WORK.a
2    DATAFILE= "C:\Users\Administrator\Desktop\BB.xlsx"
3    DBMS=EXCEL REPLACE;
4    RANGE="Sheet1$";
5    GETNAMES=YES;
6    RUN;

NOTE: 成功创建“WORK.A”数据集。
NOTE: 数据集 WORK.A 有 856 个观测和 2 个变量。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
      实际时间          0.31 秒
      CPU 时间          0.31 秒


7
8    data b;
9    set a;
10   tim=input(substr(time,1,8),time8.);

NOTE: 数值已转换为字符值,位置:(行:列)。
      10:18
NOTE: 函数 INPUT 的参数无效,位置: 行 10 列 5。
Time=10:24:51 PM=4 tim=. _ERROR_=1 _N_=1
NOTE: 函数 INPUT 的参数无效,位置: 行 10 列 5。
Time=10:24:52 PM=5 tim=. _ERROR_=1 _N_=2
NOTE: 函数 INPUT 的参数无效,位置: 行 10 列 5。
Time=10:24:53 PM=6 tim=. _ERROR_=1 _N_=3
NOTE: 函数 INPUT 的参数无效,位置: 行 10 列 5。
Time=10:24:54 PM=6 tim=. _ERROR_=1 _N_=4
NOTE: 函数 INPUT 的参数无效,位置: 行 10 列 5。

使用道具

12
lovexialulu 发表于 2017-12-18 14:05:04 |只看作者 |坛友微信交流群
滞点 发表于 2017-12-18 13:56
您好,我导入Excel后日志显示:
1    PROC IMPORT OUT= WORK.a
2    DATAFILE= "C:\Users\Administrato ...
你的time是数字型的,不用input了,mark起来
/*tim=input(substr(strip(time),1,8),time8.);*/ 用time 代替tim

使用道具

13
滞点 发表于 2017-12-18 14:28:13 |只看作者 |坛友微信交流群
lovexialulu 发表于 2017-12-18 14:05
你的time是数字型的,不用input了,mark起来
/*tim=input(substr(strip(time),1,8),time8.);*/ 用time 代替 ...
感谢!

使用道具

14
superguy333 发表于 2017-12-18 19:45:19 |只看作者 |坛友微信交流群
小璐璐写的有点复杂,改进算法应该是
  1. PROC IMPORT OUT= WORK.a
  2. DATAFILE= "C:\Users\Administrator\Desktop\data.xlsx"
  3. DBMS=EXCEL REPLACE;
  4. RANGE="Sheet1$";
  5. GETNAMES=YES;
  6. RUN;
  7. /*n 为前几个平均值*/
  8. %let n = 10;
  9. data avg (drop=s);
  10. retain s;
  11. set A;
  12. s = sum (s, PM, -lag&n(PM)) ;
  13. a = s / min(_n_, &n);
  14. run;
复制代码

使用道具

15
滞点 发表于 2017-12-18 21:06:30 |只看作者 |坛友微信交流群
superguy333 发表于 2017-12-18 19:45
小璐璐写的有点复杂,改进算法应该是
您好,之前您帮忙写的程序我这边运行上有些问题,麻烦您看下?(https://bbs.pinggu.org/thread-6112675-1-1.html)

9:14:46        .        .        31        .        .        .
9:14:47        8        87        .        2.3643        .        0.75212
9:14:47        .        .        38        .        .        .
9:14:48        .        .        43        .        .        .

相同时间怎么有些数据没有对上呢,而有些又正常,可以对上

使用道具

16
superguy333 发表于 2017-12-18 21:16:33 |只看作者 |坛友微信交流群
滞点 发表于 2017-12-18 21:06
您好,之前您帮忙写的程序我这边运行上有些问题,麻烦您看下?(https://bbs.pinggu.org/thread-6112675-1 ...
不要用小璐璐的代码,只用我的就可以了!
N=10 -----每10秒取平均值
N=30 -----每30秒取平均值
.
.
以此类推。

捕获.PNG (16.67 KB)

捕获.PNG

使用道具

17
滞点 发表于 2017-12-18 21:53:32 |只看作者 |坛友微信交流群
superguy333 发表于 2017-12-18 21:16
不要用小璐璐的代码,只用我的就可以了!
N=10 -----每10秒取平均值
N=30 -----每30秒取平均值
您的这个我也参考了,但是因为已经设他的为最佳答案了。。。之前我悬赏的问题代码有些问题,能不能麻烦您看下私信?

使用道具

18
l1i2n3i4n5g 在职认证  发表于 2017-12-20 17:12:04 |只看作者 |坛友微信交流群
superguy333 发表于 2017-12-18 19:45
小璐璐写的有点复杂,改进算法应该是
非常巧妙,受益匪浅!

使用道具

19
l1i2n3i4n5g 在职认证  发表于 2017-12-20 17:15:06 |只看作者 |坛友微信交流群
  1. /*建立数据集a*/
  2. PROC IMPORT OUT= WORK.test
  3.             DATAFILE= "C:\Users\Administrator\Desktop\test.xlsx"
  4.             DBMS=EXCEL REPLACE;
  5.      RANGE="Sheet1$";
  6.      GETNAMES=YES;
  7.      MIXED=NO;
  8.      SCANTEXT=YES;
  9.      USEDATE=YES;
  10.      SCANTIME=YES;
  11. RUN;

  12. /*求移动平均*/
  13. proc expand data=test(rename=(time=time1)) out=want;
  14.    convert pm=want10/transformout=(MOVAVE 10); /*10秒移动平均*/
  15.    convert pm=want30/transformout=(MOVAVE 30); /*30秒移动平均*/
  16.    convert pm=want60/transformout=(MOVAVE 60); /*60秒移动平均*/
  17. run;

  18. /*每10、30、60秒mark一下,方便后续if语句取舍*/
  19. data want;
  20.    set want;
  21.    if mod(time,10)=9 then mark10=1;
  22.    if mod(time,30)=29 then mark30=1;
  23.    if mod(time,60)=59 then mark60=1;
  24. run;

  25. PROC EXPORT DATA= WORK.want
  26.             OUTFILE= "C:\Users\Administrator\Desktop\want.xlsx"
  27.             DBMS=EXCEL REPLACE;
  28.      SHEET="Sheet";
  29.      NEWFILE=YES;
  30. RUN;
复制代码

使用道具

20
滞点 发表于 2017-12-20 19:22:12 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2017-12-20 17:15
感谢您的回复!受益匪浅

使用道具

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

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

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

GMT+8, 2024-4-20 09:27