sas,combine,未知代码数据集观察
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sas,combine,未知代码数据集观察相关的知识,希望对你有一定的参考价值。
我需要帮助阅读下面的代码。我不确定此代码中的具体部分是做什么的。例如,( firstobs = 2 keep = column3 rename = (column3 = column4) )
做什么?
另外,( obs = 1 drop = _all_ );
做什么?
我之前也没有使用过column5 = ifn( first.column1, (.), lag(column3) );
。这是做什么的?
我在读别人的代码。我希望我能提供更多细节。如果我找到解决方案,我会发布它。谢谢你的帮助。
data out.dataset1;
set out.dataset2;
by column1;
WHERE column2 = 'N';
set out.dataset1 ( firstobs = 2 keep = column3 rename = (column3 = column4) )
out.dataset1 ( obs = 1 drop = _all_ );
FORMAT column5 DATETIME20.;
FORMAT column4 DATETIME20.;
column5 = ifn( first.column1, (.), lag(column3) );
column4 = ifn( last.column1, (.), column4 );
IF first.column1 then DIF=intck('dtday',column4,column3);
ELSE DIF= intck('dtday',column5,column3);
format column6 $6.;
IF first.column1
OR intck('dtday',column5,column3) GT 20 THEN column6= 'HARM';
ELSE column6= 'REPEAT';
run;
好像你需要了解SAS datastep languange!括号中发生的这一系列事件是datastep选项当您引用表时,您可以使用这些选项,即使在proc sql中您拥有的选项:firstobs:这将启动记录中的数据馈送输入您的案例2它意味着SAS将在第二条记录中开始。
keep:这将只使用列表中的字段而不是使用表中的所有字段rename = rename将重命名字段,因此它的工作方式类似于SQL中的别名
OBS =将限制您从SQL中的顶部或限制中提取的记录数量
DROP =将删除从您的案例中选择的字段全部使用,这意味着他将丢弃所有字段。
至于功能:
LAG保留了您在括号中放置的字段的前一记录的值,因此DPD_CLOSE_OF_BUSINESS_DT
INF =像案件一样工作或如果。基本上你在第一个参数中创建一个条件,然后当第一个参数中的条件为真时应用第二个参数,第三个参数在第一个参数的条件为假的情况下完成。
因此,如果它是变量SOR_LEASE_NBR的第一个记录,则回答该问题,那么字段Prev_COB_DT将是。否则它将是DPD_CLOSE_OF_BUSINESS_DT的先前值。
我能给你的最好的建议是开始谷歌搜索SAS和功能名称你想知道它做什么,然后这是一个封装的问题!
希望这可以帮助!
基本上你的数据步骤是使用LAG()函数回顾一个观察和额外的SET语句以向前看一个观察。
然后使用IFN()函数调用来确保在组边界处分配缺失值。
然后使用这些计算的PREV和NEXT日期来计算DIF变量。
注意这个工作你需要在两个不同的SET语句中引用相同的输入数据集(最后使用obs=1
和drop=_all_
数据集选项的数据集实际上不需要相同,因为它不读取任何实际数据,它只需至少有一个观察)。
(firstobs = 2 keep = DPD_CLOSE_OF_BUSINESS_DT rename =(DPD_CLOSE_OF_BUSINESS_DT = Next_COB_DT))吗?
这里的代码firstobs = 2表示SAS从数据集中的第二次观察中读取数据。并且还通过使用重命名选项尝试更改变量的名称。
(obs = 1 drop = _all_);
obs = 1仅读取数据集中的第一个obs。如果指定obs = 2,则将读取最多2个obs。
drop = _all_,正在删除所有变量。
Firstobs:可以读取部分数据。如果指定Firstobs = 10,它将开始从第10次观察中读取数据。
Obs:如果指定obs = 15,则最多15个ob,数据将被加入。
如果运行下表,它会在输出结果中给出3个观测值(从第2到第4个)。
例;
DATA INSURANCE;
INFILE CARDS FIRSTOBS=2 OBS=4;
INPUT NAME$ GENDER$ AGE INSURANCE $;
CARDS;
SOWMYA FEMALE 20 MEDICAL
SUNDAR MALE 25 MEDICAL
DIANA FEMALE 67 MEDICARE
NINA FEMALE 56 MEDICAL
RUN;
以上是关于sas,combine,未知代码数据集观察的主要内容,如果未能解决你的问题,请参考以下文章
在宏内部使用变量内部数据集名称时,SAS语法错误22和200