【问题标题】:Boxplots where date grouped by year日期按年份分组的箱线图
【发布时间】:2015-02-02 00:23:31
【问题描述】:

我最近向question 询问了有关 SAS 分组的问题。根据这个问题,并使用相同的数据集,我正在努力制作箱线图。

数据如下:

Date    Close   Volume
12/31/2014  222.41  2402097
12/30/2014  222.23  2903242
12/29/2014  225.71  2811828
12/26/2014  227.82  3327016
12/24/2014  222.26  1333518
12/23/2014  220.97  4513321
12/22/2014  222.6   4806917
12/19/2014  219.29  6910461
12/18/2014  218.26  7483349
12/17/2014  205.82  7367834
12/16/2014  197.81  8426105
12/15/2014  204.04  5218252
12/12/2014  207 7173782

这个数据集实际上涵盖了 2013 年 - 14 年的整整两年。我想要一个每年的箱线图和变量(收盘价和成交量)。

这是我尝试过的:

proc boxplot data=tsla;
class Date;
format Date year.;
   plot Close*Date;
run;

但这会返回错误“

ERROR 180-322: Statement is not valid or it is used out of proper order.
162  format Date year.;
163     plot Close*Date;
164  run;

"

那么正确的顺序是什么?

我怎样才能让 SAS 给我总共 4 个箱线图? 2 个变量(收盘价和成交量)以及超过两年(2013 - 14 年)?

【问题讨论】:

  • 我认为您需要在 skeletal 之后使用分号来结束您的 plot 语句。
  • 谢谢,添加了分号,但现在出现错误。有什么想法吗?

标签: sas boxplot


【解决方案1】:

proc boxplot 中没有 class 语句。

首先,使用数据步骤添加“年份”变量。

data tsla2;
  set tsla;
  year=year(date);
run;

按年份排序:

proc sort data=tsla2;
  by year;
run;

proc boxplot 中使用by 语句:

proc boxplot data=tsla2;
  by year;
  plot close*year;
  plot volume*year;
run;

如果您希望将每个变量的所有年份一起绘制,则无需排序或使用by 语句。做吧:

proc boxplot data=tsla2;
  plot close*year;
  plot volume*year;
run;

【讨论】:

  • 当您说“将 year=year(Date) 添加到数据步骤时,您的确切含义是什么?我使用 SAS gui 的导入功能来导入数据。是否可以添加此步骤在,像这样: proc boxplot year=year(Date) data=tsla; year=year(Date); plot Close*Date; run;
  • 这很棒。我认为我无法弄清楚我正在研究向 SAS 添加字段。现在显示箱线图。再次感谢
  • 您不需要数据步骤。如果将class 语句替换为by,则原始代码将起作用。数据仍需要按日期进行预排序。
  • 没错,但它会产生不同的结果。我不太清楚哪种方法更接近预期结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
相关资源
最近更新 更多