将数据值调用为新的SAS代码/将另一个表中的值添加到新表中

时间:2017-05-30 18:45:35

标签: sas

嘿伙计们提前感谢您的帮助。

我正在尝试一次做几件事。

  1. 如何从我创建的另一个表中调用数据值?
  2. 如何将beginnong中的值添加到新表中的指定值?
  3. 详细说明,我在表A中有一个基于成员的列(来自1,2,3,...,500)。我有一个我要创建的新表,表B,应该有一个特定的成员编号(5,6,8等)。例如,第一行“公式”下的相应值应该是表A中1到5之间的值的总和。非常感谢!

    表A:

    Members Value
    1         3.4
    2         4.8
    3         5.1
    4         6.2
    5         3.8
    6         2.1
    

    表B:

    Members    Value
        3       13.3 (3.4 + 4.8 + 5.1)
        4       19.5 (3.4 + 4.8 + 5.1 + 6.2)
        6       25.4 (3.4 + 4.8 + 5.1 + 6.2 + 3.8 + 2.1) 
    

    这是我到目前为止的代码:

    data simulation_tracking; 
    call streaminit(12345); 
        do Member_Count = 5,6,8,10,12,15,20,25,30,40,50,60,70,80,90,100,125,150,175,200,250,300,400,500;
            Formulas =  ;
    
    
        proc sql;
            create table claims.simulation_tracking as 
                select Member_Count,Formulas
            from simulation_tracking; 
        run;  
    

3 个答案:

答案 0 :(得分:0)

如果这是一个运行总计,则使用RETAIN。 我使用sum函数,它将与sum运算符相比忽略缺失值。

data want;
set have;
retain running_total;
running_total= sum(running_total, value); 
if member_ID in (5,6,8,10,12,15,20,25,30,40,50,60,70,80,90,100,125,150,175,2‌​‌​00,250,300,400,500‌​) then output;
run;

答案 1 :(得分:0)

    data simulation_tracking;
    Member_Count = {5,6,8,10,12,15,20,25,30,40,50,60,70,80,90,100,125,150,175,2‌​00,250,300,400,500} 
    set claims.simulation; 
    retain running_total running_total = sum(running_total, Member_Count); 
    run;

答案 2 :(得分:0)

首先让我们将您的示例数据转换为实际的SAS数据集。

data have ;
  input member value;
cards;
1 3.4
2 4.8
3 5.1
4 6.2
5 3.8
6 2.1
;

我们可以使用SUM语句生成VALUE变量的运行总和。 然后,您可以使用要控制的成员ID列表是否将观察结果写入输出数据集。

data want ;
  set have ;
  running_total + value;
  if member in (3 4 6) then output;
 run;

这将创建此表。

                          running_
Obs    member    value      total
 1        3       5.1       13.3
 2        4       6.2       19.5
 3        6       2.1       25.4