【问题标题】:Loops to update allocation循环更新分配
【发布时间】:2018-07-02 19:13:46
【问题描述】:

我有这样的数据:

 Subject  Treatment X 
 1            1     X12
 2            2     X12
 3            3     X13
 4            1     X11
 5            2     X13
 6            3     X12
 7            1     X11
 8            2     X12
 9            1     X11
 10           3     X13

我必须使用变量 Z 来计算 X 的数量,所以 Z11=#of X11's ,Z12=#of X12's 等等,但如果 X 和 T 中的最后一个数字相同,那么你在分配中加一.

所以 Z11=X11+1 if T=1, Z12=X12+1 If T=2 and Z13=X13+1 if T=3 但是如果最后一个数字和 T 不对应,那么它将保持不变相同的 Z11=X11、Z12=X12 和 Z13=13。我正在使用 proc sql 来计算分配,但每次循环通过另一个主题时,我不知道如何添加 1。

proc sql;
create table new1 as select 
sum(y="X11")+1 as z11,
sum(y="X12") as z12,
 sum(y="X13") as z13
 from dynamic;
 quit;

任何帮助将不胜感激。

【问题讨论】:

  • 我想你已经问过这个问题好几次了。请包括上面示例中预期的确切输出。

标签: loops count sas


【解决方案1】:

我不清楚您到底想要什么,但我会在创建所需变量的数据步骤中执行此操作,然后汇总总数。

data have;
input  Subject  Treatment X $;
datalines;
 1            1     X12
 2            2     X12
 3            3     X13
 4            1     X11
 5            2     X13
 6            3     X12
 7            1     X11
 8            2     X12
 9            1     X11
 10           3     X13
;

data have;
set have;
z11 = 0;
z12 = 0;
z13 = 0;
if x="X11" then do;
    z11 = z11 + 1;
    if Treatment=1 then
        z11 = z11+1;
end;
else if x="X12" then do;
    z12 = z12 + 1;
    if Treatment=2 then
        z12 = z12 + 1;
end; 
else if x="X13" then do;
    z13 = z13 + 1;
    if Treatment=3 then
        z13 = z13+1;
end;
run;

proc summary data=have;
var z:;
output out=want sum=;
run;

产生:

                         _TYPE_    _FREQ_    z11    z12    z13

                             0        10       6      6      5

如果需要,您可以删除 _TYPE__FREQ_ 变量。

【讨论】:

  • 您好,谢谢您的回答。我还有一个问题需要帮助。我需要找到每个分配的标准偏差,所以它是: M1=std(z11,z12,z13) if Treatment=1, M2=std(z11,z12,z13) if Treatment=2 and M3=std(zz ,z12,z13) 如果处理 = 3。任何帮助将不胜感激。
  • @Rani 如果它回答了您的原始问题,请将其标记为答案并将您的新问题作为新问题发布。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
相关资源
最近更新 更多