【发布时间】:2020-09-01 10:34:36
【问题描述】:
我有这个数据集:
Var1 t avg
AA 1 0.02
AA 0 0.21
BB 1 0.05
BB 0 0.20
CC 1 0.10
CC 0 0.14
如下构建
Proc sql;
Select
Var1,
t,
Avg(var2) as avg
From my_data
Group by 1,2
Order by 1,2; quit;
我的预期输出是
AA 0 0.21
BB 0 0.20
CC 0 0.14
您能给我一些建议吗? 我一直在使用 max 函数来做到这一点。我会尝试将问题分为两个步骤:首先为每个组(AA、BB 和 CC)选择较高的值,然后我会选择这些值之间的最大值。我不知道这是否是正确的方法
【问题讨论】:
-
。 .目前尚不清楚您想要什么作为结果集。一排?每个
id一行?每个t一行? “变量”是什么意思?样本数据和期望的结果会有所帮助。 -
被存储为 var3 和允许我得到这个结果的逻辑(例如,在其他情况下选择这个值应该被保存为 var 3)。 I不明白。如果 Gordon 的回答没有帮助,您应该尝试清楚地描述您的逻辑。
-
我只需要将值存储为 var3。有时会发生这样的情况,当您过滤变量时,您使用 case when 或 max 或其他定义新变量的函数或条件。情况就是这样。我曾尝试使用 top 和qualify 但由于它在proc sql 中,我得到了一些错误(请参阅上面的代码)
-
哪个值?你得到三列,
AA 0 0.21,这个var3应该包含什么? -
我应该选择的是每个组的 var1 具有更高的平均值。这个选择背后的逻辑应该允许我定义这个新变量。但我感兴趣的应该是每个具有更高平均值的值。很抱歉,但我无法解释得比这更好 :( 为避免混淆,我删除了 var3 上的所有提及