为SAS中的同一组的变量赋予相同的值

时间:2015-11-04 01:21:51

标签: sas

我有一个如下所示的数据集:

#homeBoxShadow{
        text-align:center;
        width: 300px;
        margin: 0 auto;
        height: 100px;
        background-color: black;
        opacity: .5;
        box-shadow: 10px 10px 5px #888888;
        color: white;
        font-size:3em;
        text-shadow: 3px 4px 5px #000; 
        line-height: 90px;
    }

我尝试创建一个名为id diagnosis 1 a 1 b 1 c 2 d ... 的新变量,为binary的每一组1赋予id的值{{1}是diagnosis。现在我的代码看起来有点像这样:

a

此输出如下:

data temp;
set a.dataset;
if diagnosis = a then binary = 1;
else binary = 0;
run;

换句话说,我希望输出看起来像这样:

id    diagnosis   binary
1        a          1
1        b          0
1        c          0
2        d          0
...

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我假设初始数据按id排序,我设置了一些额外的输入记录:

data have;
  input id $ diagnosis $;
  datalines;
1        a
1        b
1        c
2        d
2        e
3        f
3        a
;

数据步骤解决方案可以使用合并,例如:

data want;
  merge have(in=in_h)
        have(in=in_h2 where=(diagnosis='a'));
  by id;

  binary=(in_h=in_h2);
run;

如果数据按id 诊断排序,那么您可以尝试:

data want;
  set have;
  by id;

  retain binary;

  if first.id then
    binary=(diagnosis='a');
run;

此致 阿米尔。

答案 1 :(得分:0)

你可以试试这个:

结果1:

SELECT id, diagnosis,
       CASE diagnosis WHEN 'a' THEN 1 ELSE 0 END AS binary
FROM Your_Table

结果2:

SELECT id, diagnosis,
       CASE id WHEN 1 THEN 1 ELSE 0 END AS binary
FROM Your_Table