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;