楼主: zhiyong75
13117 8

[求助]sAS中的Merge和Update到底什么区别 [推广有奖]

  • 0关注
  • 2粉丝

已卖:785份资源

硕士生

97%

还不是VIP/贵宾

-

威望
0
论坛币
2023 个
通用积分
0.1800
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
184 点
帖子
77
精华
0
在线时间
278 小时
注册时间
2006-9-5
最后登录
2017-8-20

楼主
zhiyong75 发表于 2007-3-22 12:24:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Merge和Update到底什么区别?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:update Merge date PDA ATE SAS update Merge

回帖推荐

bakoll 发表于9楼  查看完整内容

还是通过例子能够更好理解区别 merge Examples Example 1: One-to-One Merging This example shows how to combine observations from two data sets into a single observation in a new data set: data benefits.qtr1; merge benefits.jan benefits.feb; run; Example 2: Match-Merging This example shows how to combine observations from two data sets into a single observation in a new data ...

sumc 发表于2楼  查看完整内容

MERGE是合并语句,它把两个或两个以上的数据集中的观测合并为新数据集中的一个观测.和SQL中的连接有点类似. UPDATE语句如果用来组合两个数据集中的观测时与MERGE基本相同,但是UPDATE语句有特殊的功能,它可以用一个修改数据集中的观测来修改主数据集.而merge是不可以实现的. 而且update语句一定要有by语句,merge语句在一对一合并的时候可以没有by语句. 对于update语句,主数据集中的共同变量必须是单值的.产生的主数据集包含主数据 ...

本帖被以下文库推荐

沙发
sumc 发表于 2007-3-22 15:34:00

MERGE是合并语句,它把两个或两个以上的数据集中的观测合并为新数据集中的一个观测.和SQL中的连接有点类似.

UPDATE语句如果用来组合两个数据集中的观测时与MERGE基本相同,但是UPDATE语句有特殊的功能,它可以用一个修改数据集中的观测来修改主数据集.而merge是不可以实现的.

而且update语句一定要有by语句,merge语句在一对一合并的时候可以没有by语句.

对于update语句,主数据集中的共同变量必须是单值的.产生的主数据集包含主数据集中的所有观测,并按修改数据集中共同变量值相同的观测进行修改.

已有 3 人评分经验 论坛币 学术水平 热心指数 收起 理由
bingobingo + 60 + 1 分析的有道理
数据分析师3K + 20 鼓励积极发帖讨论
醉_清风 + 1 + 1 精彩帖子

总评分: 经验 + 60  论坛币 + 20  学术水平 + 2  热心指数 + 1   查看全部评分

藤椅
yaolixiang 发表于 2007-3-23 09:17:00
恩,学习了

板凳
lavendercao 发表于 2011-8-2 15:42:26
没有更详细的么?

报纸
李泉汶 发表于 2012-10-17 17:59:11
有点理解了

地板
fan19889017 发表于 2013-10-3 13:12:55
学习学习。

7
bingobingo 在职认证  发表于 2013-10-4 11:55:45
分析得很清楚。

8
butterfly1107 发表于 2014-10-25 12:12:53
不错,分析的很细致

9
bakoll 发表于 2015-5-26 12:43:13
还是通过例子能够更好理解区别

merge Examples


Example 1: One-to-One Merging
This example shows how to combine observations from two data sets into a single observation in a new data set:

data benefits.qtr1;
   merge benefits.jan benefits.feb;
run;



Example 2: Match-Merging
This example shows how to combine observations from two data sets into a single observation in a new data set according to the values of a variable that is specified in the BY statement:

data inventry;
   merge stock orders;
   by partnum;
run;



Example 3: Merging with a Data Set List
This example uses a data list to define the data sets that are merged.

data d008; job=3; emp=19; run;
data d009; job=3; sal=50; run;
data d010; job=4; emp=97; run;
data d011; job=4; sal=15; run;
data comb;
merge d008-d011;
by job;
run;
proc print data=comb;
run;

update Examples

Example 1: Basic Updating
These program statements create a new data set (OHIO.QTR1) by applying transactions to a master data set (OHIO.JAN). The BY variable STORE must appear in both OHIO.JAN and OHIO.WEEK4, and its values in the master data set should be unique:

data ohio.qtr1;
   update ohio.jan ohio.week4;
   by store;
run;



Example 2: Updating By Renaming Variables
This example shows renaming a variable in the FITNESS data set so that it will not overwrite the value of the same variable in the program data vector. Also, the WEIGHT variable is renamed in each data set and a new WEIGHT variable is calculated. The master data set and the transaction data set are listed before the code that performs the update:

Master Data Set                          
            HEALTH                     

OBS    ID     NAME     TEAM    WEIGHT      

1    1114    sally    blue      125      
2    1441    sue      green     145      
3    1750    joey     red       189      
4    1994    mark     yellow    165
5    2304    joe      red       170

Transaction Data Set
            FITNESS

OBS   ID     NAME     TEAM    WEIGHT

1   1114    sally    blue      119
2   1994    mark     yellow    174
3   2304    joe      red       170


options nodate pageno=1 linesize=80 pagesize=60;

   /* Sort both data sets by ID */
proc sort data=health;
   by id;
run;
proc sort data=fitness;
   by id;
run;

   /* Update Master with Transaction */
data health2;
   length STATUS $11;
   update health(rename=(weight=ORIG) in=a)
          fitness(drop=name team in=b);
   by id ;
   if a and b then
      do;
         CHANGE=abs(orig - weight);
         if weight<orig then status='loss';
         else if weight>orig then status='gain';
         else status='same';
      end;
   else status='no weigh in';
run;

options nodate ls=78;

proc print data=health2;
   title 'Weekly Weigh-in Report';
run;

Updating By Renaming Variables

                     Weekly Weigh-in Report             1

  OBS STATUS        ID   NAME   TEAM    ORIG  WEIGHT  CHANGE

   1  loss         1114  sally  blue     125    119      6  
   2  no weigh in  1441  sue    green    145      .      .  
   3  no weigh in  1750  joey   red      189      .      .  
   4  gain         1994  mark   yellow   165    174      9  
   5  same         2304  joe    red      170    170      0  


Example 3: Updating with Missing Values
This example illustrates the DATA steps used to create a master data set PAYROLL and a transaction data set INCREASE that contains regular and special missing values:

options nodate pageno=1 linesize=80 pagesize=60;

   /* Create the Master Data Set */
data payroll;
   input ID SALARY;
   datalines;
011 245
026 269
028 374
034 333
057 582
;

   /* Create the Transaction Data Set */
data increase;
   input ID SALARY;
   missing A _;
   datalines;
011 376
026 .
028 374
034 A
057 _
;

   /* Update Master with Transaction */
data newpay;
   update payroll increase;
   by id;
run;
proc print data=newpay;
   title 'Updating with Missing Values';
run;

Updating With Missing Values

       Updating with Missing Values              1

           OBS     ID     SALARY

            1     1011      376
            2     1026      269    <=== value remains 269
            3     1028      374
            4     1034        A    <=== special missing value
            5     1057        .    <=== regular missing value
stay hungry stay foolish

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-28 11:27