只是有一些问题与转置数据在SAS;特别是,这可能是因为年份标题是年份格式2013,2014等,但不知道如何解决它
所以例如——>sampledata设置:
CompanyID 2013 2014 2015 2016 2017 2018 2019 2020 2021
1 5.3 3.4 6.4 7.8 5.4 9.8 2.4 4.2 4.2
2 2.3 ... ... ... ... ... ... ... ...
proc transpose data=sampledata out=long1;
var 2013-2021;
by CompanyID;
run;
所以基本上SAS似乎无法识别'2013-2021作为变量,建议是什么?谢谢!
如果您不小心将VALIDVARNAME选项设置为ANY,那么您可能拥有像2013
这样名称的变量的唯一方式。
在这种情况下,您需要在引用不遵循正常名称规则(仅包含数字,字母或下划线并且不以数字开头)的名称时使用NAME LITERALS。
proc transpose data=sampledata out=long1;
by CompanyID;
var '2013'n-'2021'n;
run;
如果您导入了VALIDVARNAME选项设置为V7的数据,那么这些字符串将被转换为_2013、_2014等名称。在这种情况下使用
var _2013 - _2021 ;
如果数据是从Excel导入的,则变量标记将是原始列标头,但变量命名将标头值转换为有效的SAS名称,很可能添加了前导下划线。
下面的代码将基于上述假设工作。
proc transpose data=sampledata out=long1;
var _2013 - _2021;
by CompanyID;
run;
SAS对变量名有一定的规则,但也支持不遵守这些规则的变量。SAS通过一个称为名称字面量的概念来处理这些。名称字面量采用'variable'n
的形式。在您的例子中,您只需要指定名称字面量。
proc transpose data=sampledata out=long1;
var '2013'n-'2021'n;
by CompanyID;
run;