【问题标题】:How to fetch a value based on another column如何根据另一列获取值
【发布时间】:2021-12-18 18:29:52
【问题描述】:

请在下面找到数据集:

ID amt order_type no_of_order
1  200  em             6
1  300  on             5
2   600  em           10

所需的输出:

ID amt order_type no_of_order
1  500  on            11
2  600  em           10

根据我需要选择 order_type 的最高金额。 这在sas代码中如何实现

【问题讨论】:

  • 您的输出似乎不是来自您的输入。为什么order_type='on'那一行的数字会变?
  • 它们已被聚合...amt 是 sum(amt),sum(no of order) ..for order_type..我需要得到与最高 amt 相对的值
  • 你的意思是你想要AMT总和最高的ORDER_TYPE吗?所以只有一个观察?

标签: sas


【解决方案1】:

听起来您想为每个 ID 值获取两个数值变量的总和,并为 ORDER_TYPE 选择一个值。您似乎想要采用具有最大 AMT 的 ORDER_TYPE 的值。这是使用 PROC Summary 的简单方法。

data have;
  input ID amt order_type $ no_of_order;
cards;
1  200  em   6
1  300  on   5
2  600  em  10
;

proc summary data=have ;
  by id;
  var amt no_of_order;
  output out=want sum= idgroup(max(amt) out[1] (order_type)=);
run;

结果:

                                        no_of_    order_
Obs    ID    _TYPE_    _FREQ_    amt     order     type

 1      1       0         2      500      11        on
 2      2       0         1      600      10        em

【讨论】:

  • 永远喜欢基于 IDGROUP 的解决方案 - 最被低估的 SAS 功能之一!
猜你喜欢
  • 1970-01-01
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 2020-10-09
  • 2021-09-22
  • 1970-01-01
相关资源
最近更新 更多