只想比较单元格条目和返回值。
coustmer_NO id A1 A2 A3 A4
1 5 10 20 45 0
1 13 0 45 2 5
2 4 0 10 7 8
2 3 7 9 55 0
2 10 0 0 0 0
3 4 90 8 14 3
3 10 20 7 4 15
如何计算每个customer_no的ID(值> 030) 然后,出现030之前的最小值数。
预期的输出类似于:
cosutmer_no , count_ac_num , values
1 2 1
2 1 1
3 1 3
答案 0 :(得分:0)
我建议转换为更垂直的结构。然后你可以开始尝试应用你的业务逻辑,虽然我很难理解它是什么。
假设引号没有意义(看起来有人有像"xxx"
这样的字符串,其中有实际的引号字符写入CSV文件,所以添加额外的引号以保护现有的引号,以便它成为"""xxx"""
)你可以使用compress()
函数删除它们。
然后,您可以将结果字符串拆分为3个字符的子字符串。
data want ;
set have ;
array h history1 history2 ;
do history=1 to dim(h);
h(history)=compress(h(history),'"');
length index 8 value $3 ;
do index=1 by 1 until (value=' ');
value=substrn(h(history),3*(index-1)+1,3);
if value ne ' ' then output;
end;
end;
drop history1 history2;
run;
所以你最终得到这样的东西:
Obs id type history index value
1 1 13 1 1 STD
2 1 13 1 2 STD
3 1 13 1 3 058
4 1 13 1 4 030
5 1 13 2 1 STD
6 1 13 2 2 030
7 1 13 2 3 066
8 1 13 2 4 036
9 1 13 2 5 030
10 1 13 2 6 STD
11 1 13 2 7 STD
12 1 13 2 8 STD
13 1 13 2 9 STD
14 1 13 2 10 STD
15 1 3 1 1 STD
16 1 3 1 2 STD
17 1 3 1 3 STD
18 1 3 1 4 XXX
19 1 3 1 5 STD
20 1 3 1 6 XXX
21 1 3 1 7 S