楼主: qiaqiao
3056 7

[问答] sas 按月份算均值 [推广有奖]

  • 1关注
  • 1粉丝

已卖:3份资源

博士生

98%

还不是VIP/贵宾

-

威望
0
论坛币
74 个
通用积分
3.5400
学术水平
3 点
热心指数
6 点
信用等级
2 点
经验
3527 点
帖子
116
精华
0
在线时间
606 小时
注册时间
2009-1-27
最后登录
2025-6-1

楼主
qiaqiao 发表于 2011-8-2 16:07:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

Data A                               data B

"Clsdt"    "Nrrmtdt"                   "Clsdt"     "Nrrmtdt"

"2000-01-01"  ".185600"               “2000-01”  “.1895400”

"2000-01-02"  ".185600"               “2000-02”  “.1980000”

"2000-01-03"  ".185600"               ……

"2000-01-04"  ".185600"               “2011-07”  “.323400”

"2000-01-05"  ".185600"

"2000-01-06"  ".185600"

"2000-01-07"  ".185600"

"2000-01-08"  ".197600"

"2000-01-09"  ".197600"

"2000-01-10"  ".197600"

…..

“2011-07-31” “.346500”

由data A 想得到data B

data A 实际每天的nrrmtdt 想按照月份加权平均

二维码

扫码加我 拉你入群

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

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

关键词:Data NRR RRM RMT TDT

回帖推荐

pobel 发表于2楼  查看完整内容

仅供参考: data a; input dt : yymmdd10. value; format dt yymmdd10.; cards; 2000-01-01 .185600 2000-01-02 .185600 2000-01-03 .185600 2000-01-04 .185600 2000-01-05 .185600 2000-01-06 .185600 2000-01-07 .185600 2000-01-08 .197600 2000-01-09 .197600 2000-01-10 .197600 2000-03-01 .174600 2000-03-02 .174600 2000-03-03 .185600 2000-03-04 .185600 2000-03-05 .1886 ...

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2011-8-2 17:10:05
仅供参考:
data a;
   input dt : yymmdd10. value;
   format dt yymmdd10.;
   cards;
2000-01-01  .185600
2000-01-02  .185600
2000-01-03  .185600
2000-01-04  .185600
2000-01-05  .185600
2000-01-06  .185600
2000-01-07  .185600
2000-01-08  .197600
2000-01-09  .197600
2000-01-10  .197600
2000-03-01  .174600
2000-03-02  .174600
2000-03-03  .185600
2000-03-04  .185600
2000-03-05  .188600
2000-03-06  .188600
2000-03-07  .185600
2000-03-08  .193600
2000-03-09  .193600
2000-03-10  .193600
;

proc means data=a;
     class dt;
     format dt yymmd7.;
     var value;
     output out=b(where=(^missing(dt)) keep=dt value_mean) mean=value_mean;
run;


已有 2 人评分经验 论坛币 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
crackman + 100 + 5 精彩帖子

总评分: 经验 + 103  论坛币 + 3  热心指数 + 5   查看全部评分

和谐拯救危机

藤椅
qiaqiao 发表于 2011-8-2 17:31:20
谢谢 ,回复很及时。 但是不是我想要的结果。
我想得到data b. 还要进行后续处理。 不是仅算means
没有省略值   我只是没全部写出来 2000-1-1 到2011-7-31的数据每天都有, 按照月取均值, 输出数据集B 2000-1到2011-7月的数据

板凳
yugao1986 发表于 2011-8-2 17:48:25
lz的意思是每天的数值都用每月均值替代吗?
三人行必有我师

报纸
qiaqiao 发表于 2011-8-2 19:33:00
yugao1986 发表于 2011-8-2 17:48
lz的意思是每天的数值都用每月均值替代吗?
是每天的数值都用每月均值替代

地板
yugao1986 发表于 2011-8-2 20:13:28
  1. data b;
  2.    set a;
  3.    yy=year(dt);
  4.    mm=month(dt);
  5. run;
  6. proc summary data=b nway;
  7.    class yy mm;
  8.    var value;
  9.    by dt;
  10.    output out=c(keep=dt mean_value) mean=mean_value;
  11. run;
复制代码
三人行必有我师

7
zhaoping603 发表于 2011-8-3 10:45:09
借鉴yugao1986的,小调一下。
data b;

set a;

  yy=year(dt);

mm=month(dt);

run;


proc  sql;
create table cc  as
  select dt ,mean(value)  as  avg
   from  b
   group  by  yy , mm ;

quit;

8
qiaqiao 发表于 2011-8-3 13:53:30
re: zhaoping603 是我想要的结果  能否改成 每年 12个月 有12个数值
例如2000-1月的均值 是 0.187 只需要 这一条记录作为当月的就好

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 20:44