append 后如何刪除_如何在STATA中合并數據文件呢?

?

作者:江小白
郵箱:jieresearch@163.com

?

我們在使用stata進行數據分析時,可能涉及多個數據文檔的合并操作或者同時使用不同數據集中的多個變量,這都需要我們進行文檔間不同變量的歸并。
例如,我們需要使用CFPS(中國家庭追蹤調查)數據庫進行實證分析,而申請拿到的原始數據中包含成人數據庫,兒童數據庫,家庭關系庫等多個數據集,我們需要的變量分散在這些數據集中,此時就需要將不同數據庫中的不同變量放到一起;再譬如我們需要CFPS多期的調查數據構建多期面板,這又需要我們把多期的數據合并到一起...

在stata中就為我們提供了mergeappend 等命令以實現多個數據文件的「橫向合并」「縱向合并」


「merge」 命令

mergeappend 都是stata自帶的數據處理命令,為了了解命令的使用,我們可以使用help 命令

help merge

通過幫助命令我們可以觀察到如下語句格式

?

通過關鍵變量進行1對1合并
merge ?1:1 ?varlist ?using ?filename

通過關鍵變量進行多對1合并
merge m:1 varlist using filename

通過關鍵變量進行1對多合并
merge 1:m varlist using filename

通過關鍵變量進行多對多合并
merge m:m varlist using filename

通過觀測數進行1對1合并
merge 1:1 _n using filename

?

利用幫助文件的示例演示1對1的數據合并如何操作

webuse autosizelistwebuse autoexpenselist/*Perform 1:1 match merge*/webuse autosizemerge 1:1 make using http://www.stata-press.com/data/r15/autoexpenselist

通過list命令,我們可以觀察到 autosize 和 autoexpense 的數據詳情

autosize 數據

makeweightlength
Toyota ? Celica2,410174
BMW 320i2,650177
Cad. Seville4,290204
Pont Grand Prix3,210201
Datsun 2102,020165
Plym. Arrow3,260170

autoexpense 數據

makepricempg
Toyota Celica5,89918
BMW 320i9,73525
Cad. Seville15,90621
Pont. Grand Prix5,22219
Datsun 2104,58935

根據數據中的make變量,進行 1對1 的合并,在merge合并中我們需要定義 master 數據集和 using 數據集,相當于我們對于數據集定義主從關系,我們將 autosize 數據集作為master,然后 using autoexpense 數據集1對1合并,那么可以得到如下合并結果:

27b2bb78ed0c97c474bdbad4fd9fbca2.png

使用 merge 后,stata會給出數據 match 的結果,如下表:這個結果告訴我們,兩個數據集中有5個觀測變量成功 match(用_merge==3表示這類變量),有1個觀測變量 not matched,而且這個匹配失敗的變量來自master 數據集 (用_merge==1表示這類變量)。

「數據match結果」

Result# of obs.
not matched1
from master1 ?(_merge==1)
from using0 ?(_merge==2)
matched5 ?(_merge==3)

在數據處理過程中可以在匹配后刪除我們不需要的not matched 的樣本,例如:drop if merge==1可以直接刪除master數據集中未匹配的樣本。


此外,merge 命令還提供了諸多的選擇項(option)內容,比較常用的有:

  1. keepusing(varlist):保留數據集中特定變量
  2. generate(newvar):使用新的變量名稱標記merge結果,默認為merge
  3. nogenerate :不生成merge變量
  4. update: 用using數據集中的值替代master數據集中相同變量的缺失值
  5. replace:用using數據集中的值替代master數據集中相同變量的非缺失值
  6. force:允許字符型和數值型變量之間不匹配

示例中還提供了1:m,m:1,以及多個選擇項使用的例子(我們一般很少用到m:m合并),其操作與解讀與1:1的合并類似

   /*進行 1:1  merge, 并保留匹配變量*/webuse autosize, clearmerge 1:1 make using http://www.stata-press.com/data/r15/autoexpense, ///keep(match) nogenlist/* Setup */webuse dollars, clearlistwebuse sforcelist/*與 sforce 進行 m:1  merge */merge m:1 region using http://www.stata-press.com/data/r15/dollarslist/*Setup*/webuse overlap1, clearlist, sepby(id)webuse overlap2list/*進行 1:m  merge, 帶update replace選項*/webuse overlap2, clearmerge 1:m id using http://www.stata-press.com/data/r15/overlap1 ///    update replacelist  /*按樣本進行順序合并*/webuse sforce, clearlistmerge 1:1 _n using http://www.stata-press.com/data/r15/dollarslist


「append」 命令

如果需要實現數據的縱向合并,我們使用append命令

help append

append的語句格式如下

?

append using filename [filename ...] [, options]

?

使用示例數據演示合并

/*Setup*/webuse evenlistwebuse oddlistappend using http://www.stata-press.com/data/r15/evenlist

even數據集

numbereven
612
714
816

odd 數據集

numberodd
11
23
35
47
59

合并結果

numberoddeven
11.
23.
35.
47.
59.
6.12
7.14
8.16

append命令也帶有 keep nolabel force等選擇項,使用方法與merge大同小異


這些操作可以幫助我們在stata中實現數據的橫向與縱向合并。例如在CFPS數據集中,可以根據追蹤調查所標記的個人ID(pid)和家庭ID(fid)等變量從相應數據庫中提取我們所需的變量進行合并;也可以根據調查年份合并我們所需的面板...

在實際中可以根據數據的結構特點和研究需求選擇合適的操作命令,用stata進行數據集的合并你學會了嗎?

本文相關的附件可以從https://github.com/czxa/Stata-Chinese-community獲取,點擊閱讀原文即可跳轉~

歡迎關注公眾號獲取更多stata相關推文

a4ce14893fd180d962994188f9bb4229.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531874.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 內網怎么安裝git環境_linux 安裝go環境

官網下載安裝包The Go Programming Language?golang.google.cngo1.4.linux-amd64.tar.gz解壓:tar -C /usr/local -zxvf go1.4.linux-amd64.tar.gz添加環境變量:export PATH$PATH:/usr/local/go/bin安裝完成輸入go測試安裝成功,寫個簡單的代碼…

java中異常注意問題(發生在多態是的異常問題)

/* 異常的注意事項: 1,子類在覆蓋父類方法時,父類的方法如果拋出了異常,那么子類的方法只能拋出父類的異常或者該異常的子類。 2,如果父類拋出多個異常,那么子類只能拋出父類異常的子集。 簡單說&#xff1…

cups支持的打印機列表_Win10“Microsoft Print to PDF”虛擬打印機不見了,如何找回?...

MS酋長很早以前在介紹Windows10的新功能時,就提到過《Win10原生支持把文件轉換成PDF格式》,該功能實際上是基于“Microsoft Print to PDF”虛擬打印機來實現的。當你點擊打印時,在打印機列表中就可以看到“Microsoft Print to PDF”虛擬打印機…

循環隊列的進隊算法c語言,循環隊列的定義,入隊算法,出隊算法,遍歷算法,及其代碼實現-Go語言中文社區...

隊列 的定義:一種可以是實現“先進先出”的存儲結構。數據的進出類似于排隊購票。隊只允許隊尾一端(rear)添加,在另一端隊頭(front)刪除。隊有隊頭(front)和隊尾(rear)兩個指針。隊頭front指向第一個元素,隊尾rear指向無實際意義的元素&#…

java中paint方法和paintComponent方法的不同

/*1.由Component.java源代碼中可以看見其中的paint()方法體是空的,在Container中重寫了該方法,其子類Window等也重寫了該方法2.由JComponent.java源代碼中可以看見其中的paint()方法中調用paintComponent, paintChildren, paintBo…

java office文件加水印_文檔預覽加水印——或可一用的防泄密方式

給文件加水印是常見的一種宣示版權的方式。像Office、WPS都自帶加水印功能,能夠給文檔加上"保密"、"嚴禁復制"這樣的水印。在多可系統中,也有這么一個添加水印的功能。啟用該功能后,在使用HTML5預覽時,多可系…

android 獲取apk資源,android-apk-parser

APK解析庫用于讀取/解析 packageName。versionName。versionCode信息的簡單類,以及已經編譯的androidsdk文件中的更多內容。通過解壓 AndroidManifest.xml 文件并解碼編譯好的XML二進制文件來收集這里信息,就可以實現。我一直在用它來實現各種android工件…

apache license 2.0如何使用防止法律糾紛_go語言使用Swaggo詳細教程

相信很多程序猿和我一樣不喜歡寫API文檔。寫代碼多舒服,寫文檔不僅要花費大量的時間,有時候還不能做到面面具全。但API文檔是必不可少的,相信其重要性就不用我說了,一份含糊的文檔甚至能讓前后端人員打起來。 而今天這篇博客介紹的…

靜態代碼塊,構造代碼塊,局部代碼塊演示

public class Test{static int num;static int numObj;//記錄有多少個對象產生!static{//靜態代碼塊, 是用來給類進行初始化的!//num 10;num;num *12;//沒有進入靜態代碼塊之前,num的初始化值是0System.out.println(num);//main(…

android執行main函數,AndroidStudio執行main方法報錯

問題:有時在開發中想直接寫一個java文件來測試一些東西,但是AndroidStudio執行的時候會報錯。代碼信息:public class HelloWorld {public static void main(String[] args) {System.out.println("HelloWorld");}}報錯信息12:04:41:…

模擬java.util.Collection一些簡單的用法

/* 需求:模擬java.util.Collection一些簡單的用法!注意:java虛擬機中并沒有泛型類型的對象。泛型是通過編譯器執行一個被稱為類型擦除的前段轉換來實現的。 1)用泛型的原生類型替代泛型。 原生類型是泛型中去掉尖括號及其中的類型…

hive 導出json格式 文件_Hive 系列 之 基本操作合集

下面是本課程概覽:(1)hive系列之簡介,安裝,beeline和hiveserver2(2)hive系列之基本操作(3)hive系列之udf(4)hive系列之二級分區和動態分區&#x…

android開發自定義view倍絲曲線,從0到1Android自定義View(四)貝塞爾曲線

原標題:從0到1Android自定義View(四)貝塞爾曲線2017年安卓巴士全球開發者論壇-上海站作者本文由兩點水投稿,博客地址:http://www.apkbus.com/myspaceblog-911082.html前言扯來扯去,前面三篇自定義 View 文章,終于扯完了…

如何保證對象的唯一性

/* 如何保證對象的唯一性:1.不允許其他程序用new來創建該類對象。2.在該類創建一個本類實例。3.對外提供一個方法讓其他程序可以獲取該對象的引用。 */ public class Test{public static void main(String[] args){//Subject sub Subject.oSub;//這種方法不可控&am…

ios kvo 要引入_騰訊社招iOS面試記錄

畢業好幾年了,上周發送了簡歷給騰訊,參加了騰訊面試。具體部門這邊就不說了。這次面試還是收獲到了很多。一面電話面試:面試官主要是針對iOS相關的基礎問題。先簡單自我介紹一下自己對mrc和arc的理解談談對自動釋放池的理解自動釋放池在mrc和…

動態設置html字號,動態設置html的font-size值 (適配文字大小)

PC端(function () {function setRootFontSize() {let rem, rootWidth;let rootHtml document.documentElement;//限制展現頁面的最小寬度rootWidth rootHtml.clientWidth < 1366 ? 1366 : rootHtml.clientWidth;// 19.2 設計圖尺寸寬 / 100( 設計圖的rem 100 )rem roo…

一個小例子對多態簡單的理解

class Parent{int age;String name;public Parent(String name, int age){this.name name;this.age age;}public void writeWay(){System.out.println("毛筆!");}}class Child extends Parent{int age;String name;//這里只說為了說明一個問題&#xff0c;其實完全…

運行shell腳本時怎么知道jdk路徑_Shell寫腳本關于ssh執行jar包,需要刷新JDK路徑的問題...

比如腳本中下面這一段ssh $i "java -jar /applog/$PROJECT/$APPNAME --server.port$SERVER_PORT >/dev/null 2>&1 &"免密登錄linux服務器&#xff0c;執行jar包&#xff0c;通過ssh執行java程序&#xff0c;涉及到一個找不到JDK路徑的問題&#xff0c;…

html 中加號的表示方法,CSS的+(加號)選擇器怎么用

在CSS中“”符號選擇器用于選擇緊跟在指定元素之后但不在特定元素內部的元素。下面本篇文章就來具體介紹一下&#xff0c;希望對大家有所幫助。“”符號選擇器在CSS中“”符號選擇器被稱為相鄰兄弟選擇器&#xff0c;用于選取在同一父元素下的&#xff0c;緊跟指定元素之后的另…

poj 1724ROADS(bfs和dfs做法)

1 /*2 dfs比較好想&#xff0c;就是測試數據的問題&#xff0c;導致在遍歷邊的時候要倒著遍歷才過&#xff01;3 */4 #include<iostream> 5 #include<cstdio>6 #include<cstring>7 #include<vector>8 #include<algorithm>9 #define Max 0x3f3f3f…