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