基于SAS中另一个变量的值查找变量的平均值

基于SAS中另一个变量的值查找变量的平均值,sas,Sas,我有一个数据集,其中有两个变量a和B。两人都有100次观察。数据根据A按升序排序。我需要找到B的平均值,其中平均值窗口由A决定。根据A的第一次和最后一次观察,必须运行循环 例如,A的范围为300-340。让A(1)表示A的第一个值。我需要运行一个循环,该循环将在值a为a(1)+2即302时中断。关键是A的每个不同值可能有一个以上的观察值。例如,对于A的值300和301,如果有10个观察值,我需要对应10个观察值的B平均值 类似地,我需要从后面运行一个循环,即340(下降循环)。对于a-5(335

我有一个数据集,其中有两个变量
a
B
。两人都有100次观察。数据根据
A
按升序排序。我需要找到
B
的平均值,其中平均值窗口由
A
决定。根据
A
的第一次和最后一次观察,必须运行循环

例如,
A
的范围为300-340。让
A(1)
表示
A
的第一个值。我需要运行一个循环,该循环将在值
a
a(1)+2
即302时中断。关键是
A
的每个不同值可能有一个以上的观察值。例如,对于
A
的值300和301,如果有10个观察值,我需要对应10个观察值的
B
平均值


类似地,我需要从后面运行一个循环,即340(下降循环)。对于a-5(335)的值,从底部可以观察到30次。对于
B
的相应30个观察值,我需要平均值

使用proc-sql实现

PROC SQL;

SELECT A, AVG(B)
FROM SAS-DATASETS
GROUP BY A
ORDER BY A DESC;
RUN;

我想答案可能很简单,但你的问题不够清楚。你能把源数据的样子和结果的样本放进去吗?基思-样本数据如下:a B 10 25 10 36 10 78 11 44 11 34 11 23 11 54 12 34 12 54 12 11 12 19 13 6我需要找到B的平均值。我将运行一个循环,当a的值是11+某个数字时,它将选取B的平均值(这是A的第一个观测值,在整个计算中将是固定的)。11+2 11+3 11+4等将是条件。当A的值小于13时,对于所有相应的B,我需要平均值(例如)。该点是A的第一个值对于不同的数据集是不同的,因此代码必须选择A的第一个值