代码之家  ›  专栏  ›  技术社区  ›  ASH

如何在SAS VA 7.4 Designer中创建累积中值字段?

sas
  •  1
  • ASH  · 技术社区  · 6 年前

    考虑VA 7.4 Designer中的列表。它只有两个字段(月,患者中位数)。目的是计算几个月的累积中值。该累积中位数被标记为“中位数患者”。附有一个包含更多描述性步骤的示例数据。

    请看一下。注:只需使用VA 7.4 Designer中的中值函数(而非Desired),就可以轻松计算每月的患者中值。需要累积中值。

    谢谢你,祝你玩得开心`

    Sample Data
    -------------
    Account ID  Month       #patients
    ----------  -------     ----------
    1       Jan2017     5
    2       Jan2017     3
    3       Feb2017     7
    4       Feb2017     6
    5       Feb2017     2
    6       Mar2017     4
    7       Apr2017     1
    8       Apr2017     10
    9       Apr2017     9
    10      Apr2017     3
    
    
    
    Typical calculation in SAS VA 7.4
    -----------------------------------
    Monthly Median (Easy using median function)
    -------------------------------------------
    Month       Median Patients
    ---------   ---------------     
    Jan2017     4       ( 5+3 ) /2
    Feb2017     6       middle of ( 2,6,7 )
    Mar2017     4       
    Apr2017     6       middle of ( 1,3,9,10 )  = (3+9)/2 = 6
    
    
    
    Cumulative Monthly Median (Desired in SAS VA 7.4) Any idea how to calculate this assuming this is in a List Table with only two fields (Month and Median Patients)?
    ------------------------------------------------------------------------------------------------------------------------------------------------------------
    Month       Median Patients
    --------    -----------------
    Jan2017     4       ( 5+3 ) /2
    Feb2017     5       middle of ( 2,3,5,6,7 )     = 5
    Mar2017     5       middle of (2,3,4,5,6,7 )    = (4+5) /2 = 4.5(approx. 5 when rounded)
    Apr2017     5       middle of(1,2,3,3,4,5,6,7,9,10) = (4+5) /2 = 4.5(approx. 5 when rounded)
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   momo1644    6 年前

    在VA Designer中:

    1. 创建一个名为 monthyear 并指定与您相同的格式 Month 领域
    2. 在报告正文中创建 drop-down & List-Table 对象,
    3. 分配 字段到 下拉列表 ,然后转到“角色”选项卡,并在参数框中选择 每月 ; 你刚刚创建的,
    4. 选择列表表,指定月份、患者(确保聚合为中间值),然后转到“过滤器”选项卡并使用点创建预付款过滤器,然后单击: Month <= monthyear
    5. 现在已设置交互,请确保当您从下拉列表中选择日期时,您看到要计算的正确数据,将计算每月中值

    dropdwon

    1. 从表中删除月/日字段,然后计算累积中值
        2
  •  2
  •   momo1644    6 年前

    通过SAS代码执行此操作;我 Left Join 上的隔离数据 month <= month (计算每个月的累积中值)。

    数据:

    data have;
     infile datalines dlm=',' dsd;
     informat Month monyy7.;
     format Month monyy7.;
     input Account_ID  Month    patients;
     datalines;
    1,Jan2017,5
    2,Jan2017,3
    3,Feb2017, 7
    4,Feb2017,6
    5,Feb2017, 2
    6,Mar2017 , 4
    7,Apr2017,1
    8,Apr2017,10
    9,Apr2017, 9
    10, Apr2017 ,3
    ;
    run;
    

    累计中值:

    proc sql;
    create table want as 
    select t1.Month , median(t2.patients) as Cumm_Median , round(median(t2.patients)) as Cumm_Median_rounded
    from have as t1 left join have as t2
    on t2.Month le t1.month
    group by t1.month
    order by t1.Month
    ;
    quit;
    

    输出:

     Month=JAN2017 Cumm_Median=4 Cumm_Median_rounded=4
     Month=FEB2017 Cumm_Median=5 Cumm_Median_rounded=5
     Month=MAR2017 Cumm_Median=4.5 Cumm_Median_rounded=5 
     Month=APR2017 Cumm_Median=4.5 Cumm_Median_rounded=5