使用SAS EG获取百分比

时间:2018-05-03 10:55:35

标签: sas

希望这对于能够帮助我的人来说是一个相对容易的问题。我是SAS(和编程)的新手。我有一个数据集,其中包含许多变量,每个变量都用于测量在不同活动中花费的时间。 18,000个独特条目。我需要得到每个变量对总花费时间的贡献百分比。我知道如何做到这一点,而不是如何让SAS做到这一点。以下一些变量的屏幕截图以及最右侧的总数。如果您还有其他需要,请告诉我

screenshot of variables

感谢DomPazz和momo1644这些解决方案。这些都有助于我对SAS的理解。然而,考虑到你的解决方案已经涵盖了逐行执行此操作,我显然不清楚我实际上想要实现的目标。我试图获得每个变量的总数,然后找出该总数对总体贡献的百分比。如果我“手动”这样做,那将是v1_total / overall-total * 100/1。

2 个答案:

答案 0 :(得分:0)

假设您要为每一行执行此操作 - 使用数据步骤更新变量的值除以总计。

data want;
set have;
var1 = var1 / total;
var2 = var2 / total;
/*repeat as needed*/
run;

var1var2total替换为您的实际变量名称。

SAS Data Step对数据集中的每条记录进行操作。它在所有记录中都有一个隐式循环。所以你编写了你想要的公式,并在整个表格中执行它。

如果您想要百分比的新值,则代码类似:

data want;
set have;
var1_p = var1 / total;
var2_p = var2 / total;
/*repeat as needed*/
run;

此处我们不是更新var1中的值,而是创建一个新变量var1_p来保持百分比。

答案 1 :(得分:0)

在SAS Enterprise Guide中,您可以通过以下方式执行此操作:

  • 编写代码
  • 或使用查询生成器(指向并单击)

选项1:SASCode

data have;
input id $ v1 v2 v3 v4 v5 total;
datalines;
A 1 2 3 4 5 15
B 1 2 3 4 10 20
C 0 0 0 0 15 15
D 1 0 1 0 2 4
;
RUN;
DATA want1;
set have;
v1pcnt=v1/total;
v2pcnt=v2/total;
v3pcnt=v3/total;
v4pcnt=v4/total;
v5pcnt=v5/total;
format v1pcnt percent10.2 v2pcnt percent10.2 v3pcnt percent10.2 v4pcnt percent10.2 v5pcnt percent10.2;
drop v1 v2 v3 v4 v5;
run;

选项2:EG查询构建器

  • 右键单击源表并选择"查询构建器"

  • 点击计算字段,为每个变量创建一个新字段 Step2

  • 选择高级表达式并粘贴每个变量的选项1中的代码:v1/total

  • 点击下一步并提供列名" v2pcnt"和格式" %10.2" Step3

  • 单击“完成”并重复其他变量的步骤,当准备好单击“运行”时,将创建表。

step4