- 我需要一个基于3个条件的主要变量。如果变量RoaDLM有一个数字,如果Co_ID与滞后(co_id)和IF CEO =滞后(ceo)相同,我需要一个主要变量:Lead1
-i排序以创建滞后变量
- 其他任何事情应该是'。'
- 这是我的代码:
data RoaReg;
set RoaReg;
by CO_ID descending fyear;
if RoaDlm ne 0 and Co_ID = lag(CO_ID) and ceo=ceo then
Lead1 = lag(ROA);
else if RoaDlm= 0 then
Lead1='.';
run;
- 无论如何,这不起作用。谢谢!
答案 0 :(得分:1)
你的代码有几个问题。
无法有条件地计算Lag(),总是使用它并在必要时设置为缺失。
data RoaReg2;
set RoaReg;
by CO_ID descending fyear;
Lead1 = lag(ROA);
if RoaDlm= 0 then call missing (lead1);
run;
这是您的代码的正确版本,或者我最好的猜测。提供样本数据肯定会有所帮助。
答案 1 :(得分:1)
根据我的理解,你需要一个基于几个条件的主导变量 - 两个是变量的滞后值。
据我所知,您在SAS中没有lead
功能。您可以使用proc expand
来实现此目的。而且,你没有提到你想要领导的变量 - 所以,我假设它是一个名为 ROA 的变量。
所以,这是我对你想要的最佳猜测/解释。
data RoaReg_lead;
merge RoaReg RoaReg(keep=ROA rename=(ROA=LeadROA) firstobs=2); /*merged the same table with only the ROA variable, and read the values from 2nd observation | can't use by variables in order to do so*/
Lag_co_id=lag(co_id); /*creating lagged values*/
Lag_ceo=lag(ceo);
/*conditions*/
if (RoaDLM ne . and RoaDLM>0) and co_id=Lag_co_id and ceo=Lag_ceo then
Lead1=LeadROA;
drop Lag_co_id Lag_ceo LeadROA; /*You can keep the vars to do a manual check*/
run;
否则,提供您的数据样本表(有和想要)将非常有用。