SAS select 来自另一个数据集的随机交易日期

SAS select random trading dates from another dataset

我正在尝试向名为 'new1' 的数据集添加 'pseudodate' 列。 'pseudodate' 列将随机选择 2002 年 1 月 1 日至 2018 年 12 月 31 日之间的交易日期。以下代码运行良好。它不需要 'pseudodate' 中的周末,但它仍然会增加非交易日。我只想要交易日期。事实上,我创建了另一个只有交易日期的数据集。我如何编写一个 SAS 代码,该代码将从交易日期数据集中随机选取并将其放入 'pseudodate' 列的 'new1' 数据集中。

提前致谢。

data new1;
set new;
format pseudodate yymmddn8.;
  Begdate= '01JAN2002'd;
  enddate= '31DEC2018'd;
  do _i=1 to 1000;
    pseudodate = begdate + (floor((enddate-begdate) * ranuni(457)));
    if weekday(pseudodate) not in (1,7) then leave;
    else call missing(pseudodate);
  end;
run;
  1. 在您的主数据集中创建一个随机数,它是一个介于 1 和您的交易日天数之间的整数。
  2. 在交易日数据中添加记录编号
  3. 根据 1 和 2 的数字合并数据

如果您只忽略周末,那么为什么不在 x 天之间生成一个随机数,然后使用 intnx 和工作日选项将其递增?

算出 2018 年 12 月到 2002 年 1 月之间的工作日数,并将其用作您的限制。

完全未经测试:

data want;
set new;

nDays =intck('weekdays', '01Jan2002'd, '31Dec2018'd, 'C');

x  = rand('integer', 1, nDays);

randDate = intnx('weekday', '01Jan2002'd, x);

run;