sas - 根据分布表为变量赋值
问题描述
我想解决以下问题:我只想创建一个大列(假设 Dimension 20000)。在本专栏中,我想根据概率重现字母“A”-“I”。例如,如果“A”出现的概率是 9%,那么这 20000 个观测值中恰好有 9% 将在该列中出现“A”。如果“E”的出现率为 20%,那么该栏的 20% 应填入“E”,以此类推……
我是 SAS 的新手,为什么我很遗憾没有代码作为示例。我已经为这些字母创建了频率表,所以我可以使用这个来生成我的列。
我将非常感谢任何帮助!谢谢!
解决方案
RAND()
听起来您想使用带有 TABLE 分布的函数生成一系列随机数。然后,您可以使用生成的数字来选择哪个字母。
data test;
do sample=1 to 10 ;
int=rand('table',0.1,0.2,0.3,0.1,0.3);
char=byte(rank('A')-1+int);
output;
end;
run;
推荐阅读
- java - 如何使用 apache poi 在文档 .docx 中的表格单元格中创建 TextBox
- c# - 无法在 Unity 中停止协程
- java - 撤销后如何重新请求URI权限?
- javascript - 将反应虚拟化列表的当前索引设置为状态时发生错误
- c - XPutImage 不显示任何内容
- sql-server - 如何编写一个接受 3 个参数并返回一个表的 TVF,该表包含与另一个表中的条件匹配的行的 ID
- python - Python 正则表达式后向交换组
- tensorflow - tf.feature_column 仅在启用渴望模式时可用?
- shake-build-system - 摇动构建而不为每个输入文件生成文件
- python-3.x - 如果重心已知,如何沿 Z 方向在 3D 空间中以特定角度旋转(顺时针或逆时针)点?