gpt4 book ai didi

sas - 阅读上一个和下一个观察结果

转载 作者:行者123 更新时间:2023-12-04 19:11:53 25 4
gpt4 key购买 nike

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

datetime        sp
ddmmyy:10:30:00 N
ddmmyy:10:31:00 N
ddmmyy:10:32:00 Y
ddmmyy:10:33:00 N
ddmmyy:10:34:00 N

我想用“Y”以及上一个和下一个提取观察结果:
ID              sp
ddmmyy:10:31:00 N
ddmmyy:10:32:00 Y
ddmmyy:10:33:00 N

我厌倦了使用“滞后”并成功提取了“Y”和下一个的观察结果,但仍然不知道如何提取前一个。

这是我的尝试:
data surprise_6_step3; set surprise_6_step2;
length lag_sp $1;
lag_sp=lag(sp);
if sp='N' and lag(sp)='N' then delete;
run;

结果是:
ID              sp
ddmmyy:10:32:00 Y
ddmmyy:10:33:00 N

任何方法也可以提取先前的观察结果?
感谢您的帮助。

最佳答案

尝试使用 point set 中的选项数据步骤中的语句。
像这样:

data extract;
set surprise_6_step2 nobs=nobs;
if sp = 'Y' then do;
current = _N_;
prev = current - 1;
next = current + 1;

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

set x point = current;
output;

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

run;

当您在 set 中使用数据集时,有一个隐式循环遍历数据集陈述。 _N_是一个自动变量,其中包含有关隐式循环的观察信息(从 1 开始)。当您找到您的值时,您将存储 _N_ 的值进入变量 current所以你知道你在哪一行找到了它。 nobs是数据集中的观察总数。

检查是否 prev大于 0 并且如果 next小于 nobs如果您的行是数据集中的第一行(然后没有前一行)并且如果您的行是数据集中的最后一行(那么没有下一行),则可以避免错误。

关于sas - 阅读上一个和下一个观察结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14133827/

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