2015-08-31 52 views
-1

我有一堆数据,我想通过一些标识符变量折叠并保留其他变量的非缺失值。对于ID,标题,信息的每个唯一组合,有1个值不变的var1/var2/var3,我想保留。请注意,var3是数字,而var1/var2是字符。通过标识符折叠SAS数据

我有这样的数据:

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 

谢谢!

+0

你真的应该展示你到目前为止尝试过的东西。请浏览http://stackoverflow.com/help/how-to-ask。 –

+0

和/或google SAS LOCF。 – Quentin

回答

1

UPDATE语句可以处理它。最后一个非缺失值将被使用。 UPDATE语句只需要两个数据集,即主数据库和事务数据集。主数据集每个组只能有一个观察值。但是,您可以通过使用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;