sas是一年甚至一年的专栏?

问题描述 投票:0回答:1

我目前有四年收入来源的数据,收入流填充4x4矩阵如下:

        Year1   Year2   Year3   Year4

2017    10      15      20      25
2018    10      15      20      25
2019    10      15      20      25
2020    10      15      20      25

收入来自债务工具,其中行显示债务何时发布,列表示每年收入的流量。

我正在尝试建立另一个矩阵来强调债务工具是否在当年定价以创建这个矩阵:

    Year1   Year2   Year3   Year4
2017   1    0       0       0
2018   0    1       0       0
2019   0    0       1       0
2020   0    0       0       1

这是一个非常简单的例子,为了简单起见,它继续研究仪器重新定价的频率等等,有没有办法创建一个if或where函数,它返回1或0,具体取决于年份是否等于或在发布文书的一定时间内。

到目前为止,我正在思考这个问题

%Repricing = 1

data want;
    set have;
    if Year[i] <= &Repricing; 
    then Year[i]=1;
    run; 

可能很明显,SAS不是我选择的语言,TIA。

sql sas sas-macro
1个回答
0
投票

这是实现此目的的一种方法,但我基本上将这些年份重命名为匹配多年的数据 - 这是您文本中的逻辑,而不是数据中的逻辑。

*sample data;
data have;
input YearD Year2017   Year2018   Year2019   Year2020;
cards;
2017    10      15      20      25
2018    10      15      20      25
2019    10      15      20      25
2020    10      15      20      25
;
run;

data want;
set have;

*arrays for years and flags;
array _year(2017:2020) year2017-year2020;
array _flag(2017:2020) flag2017-flag2020;

*loop over array;
do i=2017 to hbound(_year);
    /*check if year matches year in variable name*/
    if put(yearD, 4.) = compress(vname(_year(i)),, 'kd') 
        then _flag(i)=1;
    else _flag(i)=0;
end;

drop i;

run;
© www.soinside.com 2019 - 2024. All rights reserved.