SAS按标识符折叠数据

时间:2015-08-31 16:17:41

标签: sas character numeric collapse

我有一堆数据,我想通过一些标识符变量来折叠,并且只保留其他变量的非缺失值。对于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

谢谢!

1 个答案:

答案 0 :(得分:1)

UPDATE语句可以处理。将使用最后一个非缺失值。 UPDATE语句只使用两个数据集,即master和transaction。主数据集必须每个组只有一个观察。但是,您可以使用OBS = 0数据集选项来创建空主数据集,从而使用单个数据集。

首先是您的样本数据。

data have ;
  infile cards dsd truncover ;
  length id 8 title info var1-var3 $20 ;
  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;