【发布时间】:2017-04-07 20:15:51
【问题描述】:
我需要合并两个数据集。每个数据集都包含一个连续的观察编号。第一个数据集仅包含第一个观察值。第二个数据集包含所有后续观察。并非所有受试者的观察次数都相同。
问题如下。有两种不同类型的主题。该类型仅包含在第一个数据集中。当我将两个数据集合并在一起时,所有观察中都缺少该类型,但每个主题的第一个。请参阅下面的示例。
我想知道如何使用 SQL 和 DATA 步骤来执行此操作。我的真实数据集并不大,因此处理效率不是主要问题。
我曾尝试使用RETAIN,但由于第二个数据集不包含TYPE 变量,因此没有可保留的值。关于 SQL,UNION 似乎应该可以工作,并且互联网上有无数的UNION 示例,但它们都涉及单个变量。我需要知道如何通过ID 联合Observation 变量,同时保留Amount 并分配Type。
示例
data set1;
input ID $
Observation
Type $
Amount
;
datalines;
002 1 A 15
026 1 A 30
031 1 B 7
028 1 B 10
036 1 A 22
;
run;
data set2;
input ID $
Observation
Amount
;
datalines;
002 2 11
002 3 35
002 4 13
002 5 12
026 2 21
026 3 12
026 4 40
031 2 11
028 2 27
036 2 10
036 3 15
036 4 16
036 5 12
036 6 20
;
run;
proc sort data = set1;
by ID
Observation
;
run;
proc sort data = set2;
by ID
Observation
;
run;
data merged;
merge set1
set2
;
by ID
Observation
;
run;
这给了
ID Observation Type Amount
002 1 A 15
002 2 11
002 3 35
002 4 13
002 5 12
026 1 A 30
026 2 21
026 3 12
026 4 40
028 1 B 10
028 2 27
031 1 B 7
031 2 11
036 1 A 22
036 2 10
036 3 15
036 4 16
036 5 12
036 6 20
但是,我需要的是
ID Observation Type Amount
002 1 A 15
002 2 A 11
002 3 A 35
002 4 A 13
002 5 A 12
026 1 A 30
026 2 A 21
026 3 A 12
026 4 A 40
028 1 B 10
028 2 B 27
031 1 B 7
031 2 B 11
036 1 A 22
036 2 A 10
036 3 A 15
036 4 A 16
036 5 A 12
036 6 A 20
【问题讨论】: