【问题标题】:DO loops to update allocation SASDO 循环更新分配 SAS
【发布时间】:2018-06-21 16:23:01
【问题描述】:

我正在进行一项临床试验,我必须根据变量 (Xjk) 和 T,K(Treatments=1,2,3) 和年龄因子(J=1, 2,3)。我们假设如果患者的年龄因子 (j) 下降,则可以为其分配 K 个治疗 (1,2,3)。因此,如果患者处于年龄因素 1 中,则患者可以被分配 X11、X12、X13。因子二(X21,X22,X33)。因子 3(X31,X32,X33)。 Z 是为每个分配的治疗保留计数的变量。 T 和 K 都是在不同场景中使用的处理方法。 示例数据如下所示:

Subject J K  T X
1       1 2  2 X12
2       2 2  2 X22
3       1 1  1 X11
4       2 1  1 X21
..............
2310    1 3 X13

data four;
set four;    
If J = 1 and K=1 then X=X11
If J=2   and K=1 then X=X21 
If J=3   and K=2 then X=X32
data four;
set four;
If J=1 and T=1 then Z11=X11+1 Z12=X12 Z13=X13
If J=1 and T=2 then Z11=X11   Z12=X12+l Z13=X13
If J=1 and T=3 then Z11=X11   Z12=X12   Z13=X13+1
If J=2 and T=1 then Z21=X21+1 Z22=X22   Z23=X23
If J=2 and T=2 then Z21=X21   Z22=X22+1 Z23=X23
If J=2 and T=3 then Z21=X21   Z22=X22   Z23=X23+1

然后它重复因子 3。

每次 T=K 时,Z(Xjk 的计数)增加 1,如果 T 不等于 K,则 Z 保持不变。我想我每次都需要一个数组来检查条件并且不知道该怎么做,因为我对 SAS 很陌生。我不知道如何对 Z 进行编程,因为我创建的数组失败了。任何帮助将不胜感激。

【问题讨论】:

  • z11=x11+1 是什么意思? x11 是变量吗?还是您只是说z11 包含具有x11 的记录数?
  • 对不起,我的意思是 z11 包含具有 x11 的记录数。
  • 我认为这仍然不是很清楚你在做什么。这与普通频率有何不同?
  • 如果 t=k 正常频率增加 1。所以在这种情况下,它将是具有 x11+1 的记录的计数,因此每次都会增加一个额外的 1。
  • 请显示示例输入数据和该输入的预期输出。请将示例显示为可以运行以消除混淆的数据步骤。例如,在您的第一个表中,变量 X 是数字还是字符?示例表中的 X12 等值是字符串 'X12' 还是某个数字或变量引用的占位符?

标签: arrays sas do-loops


【解决方案1】:

看起来你真的把这件事弄得太复杂了。 (否则我不明白这个问题。)

听起来您有一个受试者列表,他们所在的年龄组以及他们被分配到的两个治疗组。所以听起来你有这样的数据:

data have ;
  input Subj AgeGrp Trt1 Trt2 ;
cards;
1  1 2  2
2  2 2  2
3  1 1  1
4  2 1  1
;

您可以只使用 PROC FREQ 来计算每个组合中有多少个。

proc freq data=have; tables trt1*trt2 ; run;

如果您想分别为每个年龄组计算计数,那么还要添加该变量。

proc freq data=have; tables agegrp*trt1*trt2 ; run;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-03
    • 2021-12-22
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多