我想转置数据集的一列,并对每个人和每个日期都有一个独特的观察结果。
我当前的数据如下:
Person | Date | Brand
John | 2003 | Apple
John | 2003 | Dell
Victoria | 2005 | Apple
Ted | 2006 | Samsung
Ted | 2006 | LG
我想转换此数据集,以便每个人和日期都有唯一的值
Person | Date | Brand 1 | Brand2
John | 2003 | Apple | Dell
Victoria | 2005 | Apple |
Ted | 2006 | Samsung | LG
有什么建议吗?
答案 0 :(得分:0)
您可以创建一个附加列并基于该列进行转置:
data have;
input Person$ Date Brand$;
datalines;
John 2003 Apple
John 2003 Dell
Victoria 2005 Apple
Ted 2006 Samsung
Ted 2006 LG
;
run;
proc sort data=have; by Person; run;
data have1;
set have;
by Person;
retain num 0;
if first.person then num=1;
else num=num+1;
numc=put(num,8.);
Brand_new=compress("Brand"||numc);
drop num numc;
run;
proc sort data=have1; by Person Date; run;
proc transpose data=have1 out=want(drop=_NAME_);
by Person Date;
id brand_new;
var brand;
run;