SAS 中的平均值,日期使用月份
Averages in SAS with dates using months
假设我有 50 年的每一天和每一月的数据。我还有一列列出了该数据集每天的最大降雨量。我希望能够计算这 50 年中每一年的 平均月降雨量和标准差 。我将如何完成这项任务?我考虑过使用 PROC MEANS:
PROC MEANS DATA = WORK.rainfall;
BY DATE;
VAR AVG(max_rainfall);
RUN;
但我不熟悉如何让 SAS 理解我想使用 MMDDYY 格式的 MM 来指示从哪里开始和停止计算每个月的平均值。我也不知道如何在此 PROC MEANS 语句中告诉 SAS 如何使用 MMDDYY10 正确格式化数据。这就是我的代码失败的原因。
更新:我也试过使用这个语句,
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;
但不幸的是,这也不能解决问题。它给了我错误的值,尽管它确实创建了 table。我的代码哪里出错了?我是否正确地告诉 SAS,将 30 天内的所有降雨量相加,然后除以每个月的天数?这是我的 table 的片段。
您可以使用一种格式为您对日期进行分组。但是您应该使用 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;
假设我有 50 年的每一天和每一月的数据。我还有一列列出了该数据集每天的最大降雨量。我希望能够计算这 50 年中每一年的 平均月降雨量和标准差 。我将如何完成这项任务?我考虑过使用 PROC MEANS:
PROC MEANS DATA = WORK.rainfall;
BY DATE;
VAR AVG(max_rainfall);
RUN;
但我不熟悉如何让 SAS 理解我想使用 MMDDYY 格式的 MM 来指示从哪里开始和停止计算每个月的平均值。我也不知道如何在此 PROC MEANS 语句中告诉 SAS 如何使用 MMDDYY10 正确格式化数据。这就是我的代码失败的原因。
更新:我也试过使用这个语句,
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;
但不幸的是,这也不能解决问题。它给了我错误的值,尽管它确实创建了 table。我的代码哪里出错了?我是否正确地告诉 SAS,将 30 天内的所有降雨量相加,然后除以每个月的天数?这是我的 table 的片段。
您可以使用一种格式为您对日期进行分组。但是您应该使用 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;