gpt4 book ai didi

SAS:提取上一个和下一个观察结果

转载 作者:行者123 更新时间:2023-12-03 18:32:35 24 4
gpt4 key购买 nike

我有一个这样的数据集(类型是一个指标):

 datetime         type
...
ddmmyy:10:30:00 0
ddmmyy:10:31:00 0
ddmmyy:10:32:00 1
ddmmyy:10:33:00 0
ddmmyy:10:34:00 1
ddmmyy:10:35:00 0
...

我试图提取类型 1 的数据以及上一个和下一个。尝试根据类型 1 提取 (-1,+1) 窗口。

datetime         type
...
ddmmyy:10:31:00 0
ddmmyy:10:32:00 1
ddmmyy:10:33:00 0
ddmmyy:10:34:00 1
ddmmyy:10:35:00 0
...

我找到了类似的帖子 here .我复制并粘贴了代码,但我不太确定“x”在他的代码中是什么意思。 SAS 给我“文件 WORK.x 不存在”。

有人能帮帮我吗?谢谢。

最佳答案

另外一篇文章中的X数据集与你过滤的同源表,所以代码的逻辑顺序是:

  1. 检查表'Have'中的每一行,_N_保存当前行号,
  2. 如果 Type = 1,则 Set Have Point=_N_ 转到“Have”表中的行 _N_ 并将该行输出到新表“want”,然后继续到下一行。 _N_ 可以是指向当前行、上一行或下一行的指针。 (两个 IF 语句处理第一行和最后一行的情况;其中没有 Previous 或没有 Next)

完整的工作代码:

data have;
length datetime $23.;
input datetime $ type ;
datalines;
ddmmyy:10:30:00 0
ddmmyy:10:31:00 0
ddmmyy:10:32:00 1
ddmmyy:10:33:00 0
ddmmyy:10:34:00 1
ddmmyy:10:35:00 0
;
run;

data want;
set have nobs=nobs;
if type = 1 then do;
current = _N_;
prev = current - 1;
next = current + 1;

if prev > 0 then do;
set have point = prev;
output;
end;

set have point = current;
output;

if next <= nobs then do;
set have point = next;
output;
end;
end;
run;

proc sort data=want noduprecs;
by _all_ ; Run;

注意:我添加了一个额外的步骤 proc sort 来删除重复的行。

输出:

 datetime=ddmmyy:10:31:00 type=0
datetime=ddmmyy:10:32:00 type=1
datetime=ddmmyy:10:33:00 type=0
datetime=ddmmyy:10:34:00 type=1
datetime=ddmmyy:10:35:00 type=0

关于SAS:提取上一个和下一个观察结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50143934/

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