在SAS中将具有多个变量的大型数据集从长到大重塑

问题描述

我在SAS中有一个大型数据集,需要将其从长数据更改为宽数据。

基本上,对每个属性的数据进行排序是对大约10个不同年份的每个属性进行多次观察,并带有大约150个变量。我想这样做,以便每个变量都是不同的年份,并且每个属性都有一个观测值。每个变量都有唯一的名称,我想保留其中的名称。

我所拥有的:

属性 年份 Var1 ... Var150

2010年第1期提案100 ... ABC

2011年1月1日的提案... DEF

Prop 1 2017 138 ... XYZ

Prop2 ...

我想要什么:

属性 Var1_2010 ... Var1_2017 ... Var150_2010 ... Var150_2017

Prop1 100 ... 138 ... ABC ... XYZ

Prop2 ...

我尝试使用Proc Transpose,但找不到在每个原始变量名称末尾连接年份的方法。

我也尝试过:

proc sort data=hotels;
by propertyID year;
run;

proc transpose data=hotels out=hotels_wide;
by propertyID year;
var _all_;
run;

proc transpose data=hotels_wide delimiter=_ out=hotels_wide_full(drop=_name_);
by propertyID;
var col1;
id _name_ year;
run;

但是最后一个块给我一个错误,告诉我每个propertyID的每个变量多次出现。这样做的缺点还在于会丢失每个变量的格式。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)