首页 > 解决方案 > 根据分布表为变量赋值

问题描述

我想解决以下问题:我只想创建一个大列(假设 Dimension 20000)。在本专栏中,我想根据概率重现字母“A”-“I”。例如,如果“A”出现的概率是 9%,那么这 20000 个观测值中恰好有 9% 将在该列中出现“A”。如果“E”的出现率为 20%,那么该栏的 20% 应填入“E”,以此类推……

我是 SAS 的新手,为什么我很遗憾没有代码作为示例。我已经为这些字母创建了频率表,所以我可以使用这个来生成我的列。

我将非常感谢任何帮助!谢谢!

标签: 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;

推荐阅读