sas - 在 SAS 中创建带有条件的子表

标签 sas

我想检查运算符(operator)(OP_NAME)是否被SN更改。如果运算符(operator)发生变化,则将所有相应的 SNOP_NAMEValue 输出为 Table1:OP_CHANGE else 表2:OP_UNQ.

条件:如果任何 1 个运算符随 SN 发生变化,则将整行输出到表中

SN      OP_Name Value
109029  SPAN    150
109029  SPAN    235
109032  SPAN    550
109033  SPAN    650
109033  SPAN    700
109036  FRAN    124
109036  SECURIT 224
109036  SECURIT 560
109036  SECURIT 752
109037  AOM      44
109037  SECA     58
109037  SECURIT  85
109037  SECURIT  98
109038  FRAN     45
109038  SECURIT  47
109038  SECURIT  58
109038  SECURIT  65
109039  GOVER    33
109039  GOVER    45
109039  GOVER    48
109041  SOREL    45
109041  SOREM    55
109041  INA      45
109043  SPAN     96
109044  SPAN     53
109045  SOREM    25
109045  SOREM    65

我想查看像
这样的输出表 表1:OP_CHANGE

SN  OP Name value
109036  FRAN    124
109036  SECURIT 224
109036  SECURIT 560
109036  SECURIT 752
109037  AOM     44
109037  SECA    58
109037  SECURIT 85
109037  SECURIT 98
109038  FRAN    45
109038  SECURIT 47
109038  SECURIT 58
109038  SECURIT 65
109041  SOREM   45
109041  SOREM   55
109041  INA     45

表2:OP_UNQ

SN  OP Name value
109029  SPAN    150
109029  SPAN    235
109032  SPAN    550
109033  SPAN    650
109033  SPAN    700
109039  GOVER   33
109039  GOVER   45
109039  GOVER   48
109043  SPAN    96
109044  SPAN    53
109045  SOREM   25
109045  SOREM   65

最佳答案

您可以执行以下操作:

data op_change(drop=change) op_unq(drop=change);
  set have(in=h1) have;
  by sn;

  length change $1;
  retain change;

  if h1 then do;
     if lag(op_name) ne op_name then change = 'Y';
     if first.sn then change = 'N';
  end;
  else do;
     if change = 'Y' then output op_change;
     else output op_unq;
  end;
run;

关于sas - 在 SAS 中创建带有条件的子表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22911059/

相关文章:

sas - 对于任意SAS格式,如何使字符变量等于数字变量的格式化值?

sas - 使用带有两个日期变量的数据线 infile 的数据集

c# - 从 C#.net 导出 SAS .XPT 文件

SAS 为组的其余部分返回组中的第一个值

SAS - 创建指标变量

将 SPSS 数据导入 SAS,无需标签和值

sas - 检查项目是否在 SAS 列表中

sas - 如何按高度而不是按字母顺序对条形图的条形进行排序

r - SVD 分解中 SAS/IML 和 R 的不同结果

r - SAS 宏到 R %sysfunc