SAS 按标识符折叠数据

SAS collapse data by identifiers

我有一堆数据,我想用几个标识符变量折叠起来,只保留其他变量的非缺失值。对于 id、title、info 的每个唯一组合,var1/var2/var3 的 1 个值都没有丢失,我想保留。请注意,var3 是数字,而 var1/var2 是字符。

我有这样的数据:

id  title info                 var1     var2        var3
1   foo   Some string here     string 1     
1   foo   Some string here              string 2 
1   foo   Some string here                          number 3
2   bar   A different string   string 4 string 5    
2   bar   A different string                        number 6
3   baz   Something else       string 7             number 8

我希望它像:

id  title info                 var1     var2        var3
1   foo   Some string here     string 1 string 2   number 3
2   bar   A different string   string 4 string 5   number 6 
3   baz   Something else       string 7            number 8

谢谢!

UPDATE 语句可以解决这个问题。将使用最后一个非缺失值。 UPDATE 语句恰好采用两个数据集,主数据集和事务数据集。主数据集每个组必须只有一个观察值。但是您可以通过使用 OBS=0 数据集选项创建一个空的主数据集来使用您的单一数据集。

首先是您的示例数据。

data have ;
  infile cards dsd truncover ;
  length id 8 title info var1-var3  ;
  input id -- var3 ;
cards;
1,foo,Some string here,string 1,,
1,foo,Some string here,,string 2,
1,foo,Some string here,,,number 3
2,bar,A different string,string 4,string 5,
2,bar,A different string,,,number 6
3,baz,Something else,string 7,,number 8
;;;;

这里是崩溃的步骤

data want ;
  update have(obs=0) have ;
  by id title info;
run;