gpt4 book ai didi

sas - 滞后功能在SAS中不起作用

转载 作者:行者123 更新时间:2023-12-04 16:48:37 25 4
gpt4 key购买 nike

这是我程序的一部分。(oldindex和oldreadmit表示赞赏)

问题是它适用于oldindex = 1然后readmit = 1,但是不起作用 lag(oldreadmit)= 1然后readmit = 1。你能说出什么问题吗?提前致谢!

else if 0< gap <= 30 then do;
index_d=0;
if lag(oldreadmit)=1 or oldindex=1 then readmit=1;
else oth=1;
oldindex=index_d;
oldreadmit=readmit;
end;

最佳答案

SAS lag函数会引起很多困惑,但是一旦您了解了它的工作原理,它就会变得很有意义。假设您有3个观察值,并且有一个if语句使第二个观察值在处理期间被跳过。如果然后将滞后函数应用于第三个观测值,它将返回第一个观测值,而不是第二个观测值,因为最后一次处理任何观测值都是针对第一个观测值的。

这意味着在组合滞后和if语句时要小心。在您的代码中,子句中有一个滞后,仅当if语句为true时才会执行。这将给您奇怪的结果。您应该做的是定义一个变量l_oldreadmit,使其等于if语句中使用的滞后时间。

这将起作用:

l_oldreadmit = lag(oldreadmit);

if (... whatever you have here ...);
else if 0< gap <= 30 then do;
index_d=0;
if l_oldreadmit=1 or oldindex=1 then readmit=1;
else oth=1;
oldindex=index_d;
oldreadmit=readmit;
end;

关于sas - 滞后功能在SAS中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9484728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com