我想在下表的每一行计算一些预期值:
proc sql;
create table delete
(t0avgStakeRank num,
eventtime num,
previousnode char(10),
bettors num);
quit;
proc sql;
insert into delete
(t0avgStakeRank, eventtime, previousnode, bettors)
values(0,1,' ',1000)
values(0,2, 'L',500)
values(0,2, 'W',500)
values(0,3, 'LL',250)
values(0,3, 'LW',250)
values(0,3, 'WL',250)
values(0,3, 'WW',250)
values(0,4, 'LLL',125)
values(0,4, 'LLW',125)
values(0,4, 'LWL',125)
values(0,4, 'LWW',125)
values(0,4, 'WLL',125)
values(0,4, 'WLW',125)
values(0,4, 'WWL',125)
values(0,4, 'WWW',125)
values(0,5, 'LLLL',62.5)
values(0,5, 'LLLW',62.5)
values(0,5, 'LLWL',62.5)
values(0,5, 'LLWW',62.5)
values(0,5, 'LWLL',62.5)
values(0,5, 'LWLW',62.5)
values(0,5, 'LWWL',62.5)
values(0,5, 'LWWW',62.5)
values(0,5, 'WLLL',62.5)
values(0,5, 'WLLW',62.5)
values(0,5, 'WLWL',62.5)
values(0,5, 'WLWW',62.5)
values(0,5, 'WWLL',62.5)
values(0,5, 'WWLW',62.5)
values(0,5, 'WWWL',62.5)
values(0,5, 'WWWW',62.5)
values(1,1, '',1000)
values(1,2, 'L',500)
values(1,2, 'W',500)
values(1,3, 'LL',250)
values(1,3, 'LW',250)
values(1,3, 'WL',250)
values(1,3, 'WW',250)
values(1,4, 'LLL',125)
values(1,4, 'LLW',125)
values(1,4, 'LWL',125)
values(1,4, 'LWW',125)
values(1,4, 'WLL',125)
values(1,4, 'WLW',125)
values(1,4, 'WWL',125)
values(1,4, 'WWW',125)
values(1,5, 'LLLL',62.5)
values(1,5, 'LLLW',62.5)
values(1,5, 'LLWL',62.5)
values(1,5, 'LLWW',62.5)
values(1,5, 'LWLL',62.5)
values(1,5, 'LWLW',62.5)
values(1,5, 'LWWL',62.5)
values(1,5, 'LWWW',62.5)
values(1,5, 'WLLL',62.5)
values(1,5, 'WLLW',62.5)
values(1,5, 'WLWL',62.5)
values(1,5, 'WLWW',62.5)
values(1,5, 'WWLL',62.5)
values(1,5, 'WWLW',62.5)
values(1,5, 'WWWL',62.5)
values(1,5, 'WWWW',62.5);
quit;
计算将基于“previousnode”变量、两个静态变量:一个值为 3456(例如),另一个为概率 0.75(例如)和 eventTime 变量。我想将previousnode变量的值解析为公式。例如,在节点 'L' 处,结果将是 3456*(1-(0.75^2),因为 eventTime 为 2,结果是损失。在节点 'LWLW' 处,结果将是 3456* (0.25*0.75*0.25*0.75) 因为在那个人身上有输、赢、输和赢。
如果不在一个巨大的 PROC SQL 查询中明确编码,我怎么能做到这一点?我可以通过检查每个字符串是“L”还是“W”来对最后一个、倒数第二个等结果进行子串化,然后相应地相乘,但我觉得可能有更简单的方法可以做到这一点。