gpt4 book ai didi

mysql - 如何找到SAS中分组数据中第一个观察值的滞后

转载 作者:行者123 更新时间:2023-11-29 04:36:57 25 4
gpt4 key购买 nike

我有一个数据集,它看起来像这样:

id name    score

1 daniel 30
1 jane 20
1 keisha 70
2 kelly 30
2 jerry 60
2 jay 40

我想找出分数之间的差异,将每组的第一个分数与该组中的所有其他分数进行比较。例如,

我想将 jane 的分数与 daniel 的 (30-20=10) 进行比较,并将 keisha 的分数与 daniel 的 (abs(30-70) = 40) 进行比较

然后通过比较杰瑞的分数与凯莉的分数 (abs(30-60=30)) 以及杰伊的分数与凯莉的分数 (40-30 = 10) 来重新开始。

id名称得分比较

1  daniel  30    .
1 jane 20 10
1 keisha 70 40
2 kelly 30 .
2 jerry 60 30
2 jay 40 10

有人知道用 SAS 写这个的方法吗?或任何SQL命令?

我试过以下方法

data scoring_prep;
set scoring_prep;
by id;
if not missing(score) then do;
scorediff = abs(dif(score));
if id ne lag(id) then scorediff = .;
end;
run;

但这只查找提供了先前记录的滞后,因此,例如,keisha 将与 jane 而不是 daniel 进行比较。

最佳答案

由于您不与之前的值进行比较,因此您不想使用 LAG()DIF() 函数。而是使用保留变量来传递比较值。

data want;
set scoring_prep;
by id;
retain baseline;
if first.id then baseline=score;
else scorediff=abs(baseline - score);
run;

关于mysql - 如何找到SAS中分组数据中第一个观察值的滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39027361/

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