首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SAS中查找变量的上一个值

如何在SAS中查找变量的上一个值
EN

Stack Overflow用户
提问于 2013-04-22 19:06:48
回答 1查看 5.6K关注 0票数 4

我正在尝试使用设置的条件填充变量。

如果变量数字等于。然后使其等于之前的Number值。

代码语言:javascript
复制
data table2;
  set table1;

  prv_value = lag(number);
  if number = . then number = prv_value;
run;

但是,如果一行中有两个值,其中number =。然后第二次出现的值。有之前的number =的值。。

我想要的是找到之前数字不等于的第一个匹配项。并使number的值等于先前的非缺失值。

我的数据的一个例子是:

代码语言:javascript
复制
id  number
d10   2       
d10   2       
d10   3       
d10   .       
d10   .       

应用上面的代码,我会得到:

代码语言:javascript
复制
id  number prv_number
d10   2       .
d10   2       2
d10   3       2
d10   3       3
d10   .       .

我想要的是:

代码语言:javascript
复制
id  number prv_number
d10   2       .
d10   2       2
d10   3       2
d10   3       3
d10   3       .

即,如果number的值为。然后使其等于先前出现的第一个非缺失值。

在某些情况下,在我的数据集中,我可能会:

代码语言:javascript
复制
id  number
d10   4
d10   2
d10   .
d10   .
d10   .
d10   .

我想要的是:

代码语言:javascript
复制
id  number
d10   4
d10   2
d10   2
d10   2
d10   2
d10   2

(请注意,我的数据是按事件/时间的顺序排序的,因此希望先出现第一个事件)。

对于以前出现的不同次数的延迟函数,有没有什么我可以做的,或者可以做我想做的任何事情?

EN

回答 1

Stack Overflow用户

发布于 2013-04-22 19:30:54

您可以尝试使用retain语句,如下所示(未经测试):

代码语言:javascript
复制
data table2;
  set table1;

  retain prv_value .;

  if number=. then
    number=prv_value;

  if number ne . then
    prv_value=number;
run;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16145636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档