You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS中生成随机数值向量并调用SGplot绘制散点图

SAS IML生成随机数对接SGPLOT散点图绘制实现

你只需要把IML过程中生成的随机向量/矩阵输出为标准SAS数据集,就能完全替代datalines手动录入的数据源,直接传入SGPLOT过程绘图,具体实现如下:

完整可运行示例代码

proc iml;
    N = 94;
    /* 生成94行2列的随机矩阵,两列分别对应散点图的x、y轴变量 */
    rand_pair = j(N, 2);
    /* 生成0-1区间均匀分布随机数填充矩阵 */
    call randgen(rand_pair, 'Uniform');
    /* 可选步骤:把随机数映射到0-8整数区间,和你手动录入的数据取值范围匹配,不需要可删除 */
    rand_pair = round(rand_pair * 8, 1);

    /* 核心:将IML矩阵写入标准SAS数据集 */
    create rand_plot_data var {x y}; /* 创建名为rand_plot_data的数据集,定义x、y两个变量 */
        append; /* 矩阵第一列写入x,第二列写入y */
    close rand_plot_data; /* 关闭数据集完成写入 */
quit;

/* 和调用手动录入的数据集用法完全一致,直接传参给SGPLOT绘图 */
proc sgplot data=rand_plot_data;
    scatter x=x y=y;
run;

关键注意事项

  • IML过程必须用quit语句结束,不要用run,否则可能出现数据集锁定,导致后续SGPLOT无法读取数据。
  • create语句中var {}内的变量顺序必须和矩阵列顺序一一对应,否则会出现变量值错位的问题。
  • 如果你是分开生成x、y两个独立随机向量,不需要拼接成矩阵,写入数据集时单独指定对应向量即可,示例:
proc iml;
    N = 94;
    x = j(N,1);
    y = j(N,1);
    call randgen(x, 'Uniform');
    call randgen(y, 'Normal'); /* y轴变量可单独指定分布,比如正态分布 */
    /* 写入数据集时单独指定变量和向量的对应关系 */
    create rand_plot_data var {x y};
        append var {x y};
    close rand_plot_data;
quit;
  • 生成的rand_plot_data是标准SAS数据集,和datalines录入生成的数据集没有任何结构差异,支持所有SAS过程步、数据步的操作。

内容的提问来源于stack exchange,提问作者bcg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:06:16