假设我每天和每月都有50年的数据。我还有一个列,列出该数据集每天的最大降雨量。我希望能够计算这50年中每一年的月平均降雨量和标准差。我该如何完成这项任务?我考虑过使用PROC MEANS:
PROC MEANS DATA = WORK.rainfall;
BY DATE;
VAR AVG(max_rainfall);
RUN;
但我对如何让SAS了解我想要使用MMDDYY格式的MM来指示从哪里开始并停止计算每个月的平均值感到陌生。我也不知道如何使用MMDDYY10在PROC MEANS声明中告诉SAS如何正确格式化数据。这就是我的代码失败的原因。
更新:我也尝试过使用此声明
proc sql;
create table new as
select date,count(max_rainfall) as rainfall
from WORK.rainfall
group by date;
create table average as
select year(date) as year,month(date) as month,avg(rainfall) as avg
from new
group by year,month;
quit;
但不幸的是,这也没有解决问题。它给了我错误的值,虽然它确实创建了一个表。我的代码在哪里可能出错了?我是否正确地告诉SAS,在30天内添加所有降雨量,然后除以每个月的天数?这是我桌子的一小部分。
答案 0 :(得分:2)
您可以使用格式为您分组日期。但是您应该使用CLASS语句而不是BY语句。以下是使用数据集SASHELP.STOCKS的示例。
proc means data=sashelp.stocks nway;
where date between '01JAN2005'd and '31DEC2005'd ;
class date ;
format date yymon. ;
var close ;
run;