楼主: 一眼瞬间
1320 3

[原创博文] 程序有句话不懂,求解?能改编不? [推广有奖]

  • 0关注
  • 1粉丝

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
730 个
通用积分
0.0001
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
903 点
帖子
376
精华
0
在线时间
309 小时
注册时间
2010-3-14
最后登录
2023-8-19

楼主
一眼瞬间 发表于 2010-8-23 13:31:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
/* Compute the moving average within a BY-group of last n observations.
  For the first n-1 observations within the BY-group, the moving average
  is set to missing. */
data ds1;
do patient='A','B','C';
do month=1 to 7;
  num=int(ranuni(0)*10);
  output;
end;
end;
run;
proc sort;
by patient;
%let n = 4;
data ds2;
set ds1;
by patient;
retain num_sum 0;
if first.patient then do;
  count=0;
  num_sum=0;
end;
count+1;
last&n=lag&n(num);
if count gt &n then num_sum=sum(num_sum,num,-last&n);
else num_sum=sum(num_sum,num);
if count ge &n then mov_aver=num_sum/&n;
else mov_aver=.;
run;

proc print;
run;

不知道红色那句是什么意思呢?

根据这个程序,能不能改编成moving standard deviation of last n observation.觉得貌似可以,但是好像又没那么简单。不知大家有何见解?
二维码

扫码加我 拉你入群

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

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

关键词:observations observation Deviation observat Standard average moving within count 程序

沙发
puxingrong 发表于 2010-9-4 19:25:48
不懂也顶一下~~~~
数据的奥秘!!!

藤椅
crackman 发表于 2010-9-4 19:40:12
其实见识一个SUM函数  求和罢了

板凳
hongxx 发表于 2010-9-6 22:16:08
last&n=lag&n(num);   *//取前第n个数lastn//;
if count gt &n then num_sum=sum(num_sum,num,-last&n);  *//by分组,如果count>n,则求移动累和:加上当前观测,减去第前n个数lastn//;
else num_sum=sum(num_sum,num);    *//如果count<=n,则直接求累和,不必减去前第n个值lastn//;
if count ge &n then mov_aver=num_sum/&n;   *//移动累和转为移动平均//;
else mov_aver=.;  //前n个观测置为缺失//;

注意:程序里分组的第一个观测,count=0,而不是1。(其实应该为1好点)

移动标准差的话,把观测值的平方进行移动累和,减去n被移动平均值,最后除以n就行了。

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

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