[英]SAS PROC SQL join and replace
我有两个要加入的数据集。 小型数据集是我的基本数据集,并且具有如下数据(称为DSsmall):
ID NAME COV_DATE PRODUCT
1 A_PART 1/1/2014 BOX
1 A_PART 2/1/2014 BOX
2 A_PART 1/1/2014 BOX
3 B_PART 1/1/2014 BOX
较大的数据集具有重复项,因此可能看起来像这样(称为DSLarge):
ID END_DATE PERSON_NAME
1 1/1/2012 MAX
1 1/1/2015 MAX
2 2/1/2012 SALLY
2 5/1/2014 SALLY
3 1/1/2014 JOE
的IDS 1和2实际上是相同的-它们具有相同的名称,它们都应使用相同的ID,而不是我使用DSLarge最新的END_DATE加入数据集的两个不同的ID。 这样可行。 但是现在我想根据更高的数字来组合两个ID。 因此,对于ID 1和2,我希望ID 1的所有记录都为ID 2-我可以在SQL中执行此操作吗?
假设第1 行和第2 行相同,则可以在此处轻松进行分组。
proc sql;
create table want as
select id, person_name, max(end_date)
from dsLarge
group by id, person_name;
quit;
如果他们可以使用不同的人名,而您仍要折叠它们,则希望以某种方式澄清人名问题-例如max(person_name)
或类似名称。
顺便说一下,数据步骤将更有效地执行此操作(或至少相同并且可能更有效),但是如果您的需求如此简单,那么SQL方法就可以了。
如果您想让DSSmall中的第1行和第2行的ID
为2,因为它们与第3行共享一个NAME
,那么您可以这样做:
proc sql;
create table want as
select
max(ID) as ID,
NAME,
COV_DATE,
PRODUCT
from DSsmall
group by NAME;
quit;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.