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 的数字合并数据
如果您只忽略周末,那么为什么不在 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;
我正在尝试向名为 '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 的数字合并数据
如果您只忽略周末,那么为什么不在 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;