SAS的合并数据集merge是一种常用的数据处理方法,它可以将两个或多个数据集中的记录合并到一个新的数据集中。它可以将不同来源的数据进行组合,从而使用户能够获得所需要的信息。
SAS中merge语句有三种形式:merge、update和match-merge。Merge语句用于将两个或多个数据集中的记录合并到一个新的数据集中;Update语句用于将一个数据集中的记录和另一个数据集中相应记录进行匹配,然后根据匹配情况对原始数据进行修正;Match-Merge语句是Merge和Update语句的结合体,它既能够将不同来源的资料进行组合,也能够根据匹配情况对原始资料进行修正。
data new_data; merge data1 data2; by var1; run; data data1; update data2 data1; by var1; run; data new_data; match-merge data1 data2; by var1; run;
可以基于特定的公共变量合并多个SAS数据集以给出单个数据集。 这是使用MERGE语句和BY语句完成的。 合并数据集中的观察的总数通常小于原始数据集中的观察的数量的总和。 这是因为当公共变量的值存在匹配时,变量形成两个数据集合被合并为一个记录。
下面给出了合并数据集的两个先决条件:
SAS中的MERGE和BY语句的基本语法是:
MERGE Data-Set 1 Data-Set 2 BY Common Variable
以下是所使用的参数的说明:
考虑两个SAS数据集,一个包含具有名称和工资的雇员ID,另一个包含具有雇员ID和部门的雇员ID。 在这种情况下,为了获得每个员工的完整信息,我们可以合并这两个数据集。 最终数据集仍将对每个员工有一个观察值,但它将包含薪水和部门变量。
# Data set 1 ID NAME SALARY 1 Rick 623.3 2 Dan 515.2 3 Mike 611.5 4 Ryan 729.1 5 Gary 843.25 6 Tusar 578.6 7 Pranab 632.8 8 Rasmi 722.5 # Data set 2 ID DEPT 1 IT 2 OPS 3 IT 4 HR 5 FIN 6 IT 7 OPS 8 FIN # Merged data set ID NAME SALARY DEPT 1 Rick 623.3 IT 2 Dan 515.2 OPS 3 Mike 611.5 IT 4 Ryan 729.1 HR 5 Gary 843.25 FIN 6 Tusar 578.6 IT 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
上述结果通过使用以下代码实现,其中在BY语句中使用公共变量(ID)。 请注意,两个数据集中的观测值已在ID列中排序。
DATA SALARY; INPUT empid name $ salary ; DATALINES; 1 Rick 623.3 2 Dan 515.2 3 Mike 611.5 4 Ryan 729.1 5 Gary 843.25 6 Tusar 578.6 7 Pranab 632.8 8 Rasmi 722.5 ; RUN; DATA DEPT; INPUT empid dEPT $ ; DATALINES; 1 IT 2 OPS 3 IT 4 HR 5 FIN 6 IT 7 OPS 8 FIN ; RUN; DATA All_details; MERGE SALARY DEPT; BY (empid); RUN; PROC PRINT DATA=All_details; RUN;
可能存在公共变量的一些值在数据集之间不匹配的情况。 在这种情况下,数据集仍然会合并,但在结果中给出缺失值。
ID NAME SALARY DEPT 1 Rick 623.3 IT 2 Dan 515.2 OPS 3 . . IT 4 Ryan 729.1 HR 5 Gary 843.25 FIN 6 Tusar 578.6 . 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
为了避免结果中的缺失值,我们可以考虑仅保留具有公共变量的匹配值的观察值。 这是通过使用IN语句实现的。 SAS程序的merge语句需要更改。
在下面的示例中,IN =值仅保留来自数据集SALARY和DEPT的值匹配的观察值。
DATA All_details; MERGE SALARY(IN=a) DEPT(IN=b); BY (empid); IF a=1 and b=1; RUN; PROC PRINT DATA=All_details; RUN;
在执行具有上述改变的部分的SAS程序时,我们得到以下输出。
1 Rick 623.3 IT 2 Dan 515.2 OPS 4 Ryan 729.1 HR 5 Gary 843.25 FIN 7 Pranab 632.8 OPS 8 Rasmi 722.5 FIN
运行环境要求当前 DevEco Studio 只支持 Windows 版本,为保证 DevEco Studio 正常运行,建议您的电脑配置满足如下要求:操作系...
EnumMapjava.lang.Object |---java.util.AbstractMapK,V |---|---java.util.EnumMapK,Vpublic class EnumMapK extends EnumK,Vex...
SimpleTimeZonejava.lang.Object |---java.util.TimeZone |---|---java.util.SimpleTimeZonepublic class SimpleTimeZoneextends...
AccessibilityAbilityInfojava.lang.Object |---ohos.accessibility.AccessibilityAbilityInfopublic class AccessibilityAbilit...
Pig Latin的 BagToString()函数用于将包的元素连接成字符串。在连接时,我们可以在这些值之间放置分隔符(可选)。通常,包是无...
此函数用于将给定字符串的第一个字符转换为小写。语法以下是 LCFIRST()函数的语法。grunt LCFIRST(expression) 例假设在 HDFS 目...
此函数接受日期时间对象作为参数,并返回给定日期时间对象的当前秒的毫秒数。语法这是 GetMilliSecond()函数的语法。grunt Get...
此函数接受两个日期时间对象,并计算两个给定日期时间对象之间的小时数。语法这是 HoursBetween()函数的语法。grunt HoursBetwee...
databaseAdd本接口应在服务器端调用,详细说明参见服务端API。数据库插入记录请求地址POST https://api.weixin.qq.com/tcb/datab...