sas - 在sas中将多条记录压缩为一条记录
问题描述
我有按帐户级别的行数据,我希望按帐户所有者将它们分组为新数据。是的将优先考虑。
Account_Owner Account_No Ever_Purchase Ever_Purchase_within_2days Ever_Deliver_in_2weeks
Tom 12345 Yes Yes No
Tom 34567 Yes No Yes
Tom 09876 No No No
Desired Outcome
Account_Owner Ever_Purchase Ever_Purchase_within_2days Ever_Deliver_in_2weeks
Tom Yes Yes Yes
很抱歉我没有任何代码,因为我不知道从哪里开始。
解决方案
您可以使用 DOW 循环来跟踪ever_*
临时数组中每个变量的组结果。
proc format;
value yesno .,0 = 'No' other='Yes';
data have; input
Account_Owner $ Account_No Ever_Purchase $ Ever_Purchase_within_2days $ Ever_Deliver_in_2weeks $;
datalines;
Tom 12345 Yes Yes No
Tom 34567 Yes No Yes
Tom 09876 No No No
;
data want;
array evals(100) _temporary_; * presume never more than 100 flag variables;
call missing (of evals(*));
* dow loop;
do until (last.account_owner);
set have;
by account_owner;
array flags ever:;
do _n_ = 1 to dim(flags);
evals(_n_) = evals(_n_) or flags(_n_) = 'Yes'; * compute aggregate result;
end;
end;
* move results back into original variables;
do _n_ = 1 to dim(flags);
flags(_n_) = put(evals(_n_), yesno.);
end;
* implicit output, one row per group combination;
run;
注意:在替代解决方案中,您可以将 Yes/No 转换为数字 1/0,您可以使用 Proc Summary 或 Proc MEANS 来计算组结果(如果有,则 var 的最大值将为 1,如果全部为否,则为 0)
推荐阅读
- batch-file - 任务计划程序运行批处理文件 - 批处理文件仅部分工作?
- api - PowerShell HTTPIE
- hibernate - 使用带有查询注释 Spring Data JPA 的分页时出错
- python - pyspark 中的单热编码,连续多个 1
- python - Python 如何读取 .txt 文件中的行并将它们拆分为列表?
- matlab - 在 Matlab 中从 Gumbel 分布中绘制随机数
- c++ - 具有默认模板类型的默认构造函数的类型推导
- javascript - 使用 Node js Await/Async 函数
- sparql - 使用 fuseki 在本地对大型 TTL 文件运行 sparql 查询
- c++ - 在opencv c ++中屏蔽图像和视频