Sas 如何基于ID';获取起始月份;s

Sas 如何基于ID';获取起始月份;s,sas,Sas,我想知道哪个月是开始月份,值没有丢失。 对于A来说是一月,对于B来说是三月等等。我没有理解你的问题中你说没有遗漏的部分。这需要另一个函数联合以找到第一个非缺失的值 Id jan feb mar apr may jun jul A 1 . . 1 1 . . B . . 1 . . . . A . 1 . . . . . C . . . 1 . . . 您需要一个数组和几个函数 data id

我想知道哪个月是开始月份,值没有丢失。
对于A来说是一月,对于B来说是三月等等。

我没有理解你的问题中你说没有遗漏的部分。这需要另一个函数联合以找到第一个非缺失的值

Id jan feb mar apr may jun jul
A  1   .  .     1  1    .  .
B .    .  1     .   .   .  .
A .   1   .    .    .   .  .
C .    .  .     1   .   .  .
您需要一个数组和几个函数

data id;
    input Id:$1. jan feb mar apr may jun jul;
    array a[*] jan-numeric-jul;
    target = coalesce(of a[*]);
    l=whichn(target,of a[*]);
    if l gt 0 then month = vname(a[l]);
    cards;
A  1   .  .     1  1    .  .
B .    .  99     .   .   .  .
A .   223   .    .    .   .  .
C .    .  .     -11   .   .  .
;;;;
    run;
proc print;
    run;

请根据SO规则在问题中加入您尝试过的内容。我有28个月的时间,使用上述代码时出现错误“数组下标超出范围”?数据a;输入id$ap14 mar14 jun14 jun14 aug14 sep14 oct14 nov14 dec14 jan15 feb15 mar15 ap15 may15 jun15 jul15 sep15 oct15 nov15 dec15 jan16 feb16 mar16 ap16 may16 jun16 jun16 jul16 aug16;数组a[]ap14-numeric-aug16;x=其中的(1,a[]);卡;0028545 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.跑因此,这是数据,解决方案并没有在这方面发挥作用。这里x的值是零,而不是列号。请告诉我原因。@Anonamous请查看我对答案的添加。我错过了部分要求。
data id;
    input Id:$1. jan feb mar apr may jun jul;
    array a[*] jan-numeric-jul;
    month = vname(a[whichn(1,of a[*])]);
    cards;
A  1   .  .     1  1    .  .
B .    .  1     .   .   .  .
A .   1   .    .    .   .  .
C .    .  .     1   .   .  .
;;;;
    run;