如何使用SAS SQL根据日期字段的值选择用于计算的变量(名称中包含年份)
使用SAS SQL(或仅SAS)时,我需要使用一个变量,根据不同日期字段的年份部分进行计算。变量的名称包含我需要与另一个日期变量的年份部分匹配的年份。如何选择用于计算的正确变量 例如,我需要选择使用以下哪一项:如何使用SAS SQL根据日期字段的值选择用于计算的变量(名称中包含年份),sql,db2,sas,Sql,Db2,Sas,使用SAS SQL(或仅SAS)时,我需要使用一个变量,根据不同日期字段的年份部分进行计算。变量的名称包含我需要与另一个日期变量的年份部分匹配的年份。如何选择用于计算的正确变量 例如,我需要选择使用以下哪一项: GRADE_2013 GRADE_2014 GRADE_2015 通过查看格式为2014年1月15日的日期字段,从2014年开始,我想从2014年的GRADE_2014中获取值,用于另一个计算。您有几个选项,一个是带有年份索引的数组,另一个是查找变量值的VVALUEX函数 Data
GRADE_2013
GRADE_2014
GRADE_2015
通过查看格式为2014年1月15日的日期字段,从2014年开始,我想从2014年的
GRADE_2014
中获取值,用于另一个计算。您有几个选项,一个是带有年份索引的数组,另一个是查找变量值的VVALUEX函数
Data One;
set Have;
array grades(2013:2015) grade_2013-grade_2015;
*Array method;
variable_want1 = grades(year(date_field));
*VValueX method;
variable_want2 = vvalues('grades_'||put(year(date_field), 4.));
run;
通常,如果可以将数据转换为更规范化的格式,这类问题就会变得容易得多
因此,不要让三个grade_YYYY变量在每个变量上都有年份后缀,而是将每个记录转换为三个记录,变量为year和grade 非常感谢您提供了非常好的答案……我是一个新手,所以我至少要开始使用非数组方法。好吧,是的,但她使用SAS这一事实意味着一个报告数据库,其中的数据通常会因性能原因被选择性地非规范化。@Clockwork Muse当SAS程序员收到非规范化数据时,通常,他们最好的出发点是考虑通过使用SAS来正常化(在某种程度上)可以获得的收益。使用规范化数据时,SAS编码通常要简单得多。没有理由受源数据结构的约束。