Stata merge命令与'matched'变量的变量不匹配

Stata merge命令与'matched'变量的变量不匹配,stata,Stata,我有两个数据集 其中包含我的大部分数据: ISIN Name Year TotalAssets Turnover RoA Employees 1. Nr1 Bank1 2005 30.000 1 0,5 300 2. Nr1 Bank1 2006 31.000 1 0,3 300 3

我有两个数据集

其中包含我的大部分数据:

        ISIN    Name     Year      TotalAssets   Turnover   RoA  Employees

    1.  Nr1     Bank1    2005      30.000         1        0,5    300    
    2.  Nr1     Bank1    2006      31.000         1        0,3    300    
    3.  Nr1     Bank1    2007      28.000         1        0,3    280

    4.  Nr2     Bank2    2005      150.000        0        0,8    2000
    5.  Nr2     Bank2    2006      -              0        -      2200
    6.  Nr2     Bank2    2007      -              0        -      2200

    7.  Nr3     Bank3    2005      20.000         1        0,7    275
另一个包含来自第一个数据集的一些缺失信息:

    ISIN   Name    Year   TotalAssets   RoA
1.  Nr2    Bank2   2005    150.000      0,8
2.  Nr2    Bank2   2006    180.000      1,3
3.  Nr2    Bank2   2007    170.000      0,7
4.  Nr2    Bank2   2008    150.000      0,4
当我使用以下方法组合这些数据集时:

merge 1:1 ISIN Year using "Dataset2" 
出于某种原因,只有
仅主控(1)
仅使用(2)
匹配变量
TotalAssets
RoA
,而
匹配(3)
TotalAssets
RoA
变量的每种情况提供缺失数据

合并的数据集如下所示:

        ISIN    Name     Year      TotalAssets   Turnover   RoA  Employees   _merge

    1.  Nr1     Bank1    2005      30.000         1        0,5    300    master only (1)  
    2.  Nr1     Bank1    2006      31.000         1        0,3    300    master only (1)    
    3.  Nr1     Bank1    2007      28.000         1        0,3    280    master only (1)  

    4.  Nr2     Bank2    2005      150.000        0        0,8    2000   master only (1)  
    5.  Nr2     Bank2    2006      -              0        -      2200   matched(3)
    6.  Nr2     Bank2    2007      -              0        -      2200   matched(3)
    7.  Nr2     Bank2    2008      150.000        -        0,4    -      using only (2)

    8.  Nr3     Bank3    2005      20.000         1        0,7    275    master only (1)  
但是,
匹配的
没有显示它应该合并的变量的任何数据


我是否做错了什么,或者我该如何以更好的方式来做?

查看
帮助合并
的选项,特别是
更新
替换
。在您的特定情况下,
update
选项就足够了(
\u merge==4
)。Stata将认为
主数据集不可侵犯,除非您明确说明如何使用
数据集处理
中相同的命名变量。

查看
帮助合并
的选项,特别是
更新
替换
。在您的特定情况下,
update
选项就足够了(
\u merge==4
)。Stata将认为
主数据集不可侵犯,除非您明确说明如何使用
数据集处理
中相同的命名变量。

在这种特殊情况下,您需要的是
合并
更新
选项,而不是
替换

以您的例子:

clear

input str10(ISIN) str10(Name) Year TotalAssets Turnover RoA Employees
Nr1 Bank1 2005 30000  1 0.5 300    
Nr1 Bank1 2006 31000  1 0.3 300    
Nr1 Bank1 2007 28000  1 0.3 280
Nr2 Bank2 2005 150000 0 0.8 2000
Nr2 Bank2 2006 .      0 .   2200
Nr2 Bank2 2007 .      0 .   2200
Nr3 Bank3 2005 20000  1 0.7 275
end

save data1, replace

clear

input str10(ISIN) str10(Name) Year TotalAssets RoA
Nr2 Bank2 2005 150000 0.8
Nr2 Bank2 2006 180000 1.3
Nr2 Bank2 2007 170000 0.7
Nr2 Bank2 2008 150000 0.4
end

save data2, replace

use data1,clear
merge 1:1 ISIN Year using data2, update
这给了你:

list

   +----------------------------------------------------------------------------------+
   | ISIN    Name   Year   TotalA~s   Turnover   RoA   Employ~s                _merge |
   |----------------------------------------------------------------------------------|
1. |  Nr1   Bank1   2005      30000          1    .5        300       master only (1) |
2. |  Nr1   Bank1   2006      31000          1    .3        300       master only (1) |
3. |  Nr1   Bank1   2007      28000          1    .3        280       master only (1) |
4. |  Nr2   Bank2   2005     150000          0    .8       2000           matched (3) |
5. |  Nr2   Bank2   2006     180000          0   1.3       2200   missing updated (4) |
   |----------------------------------------------------------------------------------|
6. |  Nr2   Bank2   2007     170000          0    .7       2200   missing updated (4) |
7. |  Nr2   Bank2   2008     150000          .    .4          .        using only (2) |
8. |  Nr3   Bank3   2005      20000          1    .7        275       master only (1) |
   +----------------------------------------------------------------------------------+

观察值7中缺少两个值,因为变量
营业额
员工
不在第二个数据集中。

在这种特殊情况下,您需要的是
合并
更新
选项,而不是
替换

以您的例子:

clear

input str10(ISIN) str10(Name) Year TotalAssets Turnover RoA Employees
Nr1 Bank1 2005 30000  1 0.5 300    
Nr1 Bank1 2006 31000  1 0.3 300    
Nr1 Bank1 2007 28000  1 0.3 280
Nr2 Bank2 2005 150000 0 0.8 2000
Nr2 Bank2 2006 .      0 .   2200
Nr2 Bank2 2007 .      0 .   2200
Nr3 Bank3 2005 20000  1 0.7 275
end

save data1, replace

clear

input str10(ISIN) str10(Name) Year TotalAssets RoA
Nr2 Bank2 2005 150000 0.8
Nr2 Bank2 2006 180000 1.3
Nr2 Bank2 2007 170000 0.7
Nr2 Bank2 2008 150000 0.4
end

save data2, replace

use data1,clear
merge 1:1 ISIN Year using data2, update
这给了你:

list

   +----------------------------------------------------------------------------------+
   | ISIN    Name   Year   TotalA~s   Turnover   RoA   Employ~s                _merge |
   |----------------------------------------------------------------------------------|
1. |  Nr1   Bank1   2005      30000          1    .5        300       master only (1) |
2. |  Nr1   Bank1   2006      31000          1    .3        300       master only (1) |
3. |  Nr1   Bank1   2007      28000          1    .3        280       master only (1) |
4. |  Nr2   Bank2   2005     150000          0    .8       2000           matched (3) |
5. |  Nr2   Bank2   2006     180000          0   1.3       2200   missing updated (4) |
   |----------------------------------------------------------------------------------|
6. |  Nr2   Bank2   2007     170000          0    .7       2200   missing updated (4) |
7. |  Nr2   Bank2   2008     150000          .    .4          .        using only (2) |
8. |  Nr3   Bank3   2005      20000          1    .7        275       master only (1) |
   +----------------------------------------------------------------------------------+

观察7中有两个缺失值,因为变量<代码>周转< /代码>和<代码>雇员<代码>在第二个数据集中不存在。

如果您发现我的答案有用,请考虑使用检查标记来接受它。如果您发现我的答案有用,请考虑使用复选标记来接受它。