SAS 为组的其余部分返回组中的第一个值

标签 sas data-manipulation

假设我有以下数据,但我基本上想为组中的其余值(底部的表格)复制 a 和 b 的第一个值。

例如,在第 1 组中,a 中的第一个值 = 3。我想用 3 替换组中的 2、4、1 -- 变量 b 也是如此。

原始数据:

grp a   b
----------
1   3   2
1   2   1
1   4   2
1   1   3
2   2   4
2   1   1
2   2   2
2   3   1

更新数据:

grp a   b
----------
1   3   2
1   3   2
1   3   2
1   3   2
2   2   4
2   2   4
2   2   4
2   2   4

提前致谢。

最佳答案

您可以使用按组处理和保留语句来执行此操作。请注意,输入数据集需要先按组排序才能工作。

data output(keep=grp a b);
  retain firsta firstb;
  set input;
  by grp;
  if first.grp then do;
    firsta = a;
    firstb = b;
  end;
  else do;
    a = firsta;
    b = firstb;
  end;
run;

关于SAS 为组的其余部分返回组中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605432/

相关文章:

xml - 您如何处理 fetchxml 结果数据?

python - 将字符串中的分隔数据转换为单列中的值

SAS。变量是否在数据步骤的每次迭代中都设置为缺失?

sql - Proc SQL 并通过单个变量删除重复项

mysql - 数据步骤/SQL 加入/合并/联合 2 个数据集/表并删除相同的行/观察

arrays - perl,在for循环中从数组中删除元素

r - 在 dplyr 中对新分配的变量执行操作的最佳方法是什么?

python - pandas 中的大而持久的 DataFrame

java - 从 SAS 调用 java 类。错误: Could not find class

r - 模拟从 "Hat"随机抽取