RigorMed
← 科研資源

NHANES 文件合併指南

NHANES 數據文件怎麼合併?

把合併規則寫成可檢查的檔案交接說明 可請求的產物/交付目標: 合併規則說明、組件配對核對表與樣本流轉紀錄草稿。

數據準備與樣本流轉

先核對兩個文件是否屬於同一調查週期、是否都是參與者一行,再用 SEQN 檢查一對一匹配。合併後的行數變化,要拆開看組件適用人群、文件匹配和字段特殊編碼,不能統稱為缺失或失訪。

本文只演示 CDC/NCHS 公開發佈的 2017–2018 人口學文件 DEMO_J 與血壓/膽固醇問卷文件 BPQ_J 的同週期橫向合併。它回答的是文件和樣本流轉問題,不報告高血壓患病率、效應估計或因果結論。下列人數來自兩份官方 XPT 文件的 SEQN 匯總,並與相應 Codebook 核對。

用 RigorMed 交付這項任務

  1. 把合併規則寫成可檢查的檔案交接說明

    以下為建議任務輸入與可請求整理產物,不是本輪實跑、客戶成果或保證完成。

    已有材料: 已確認週期、官方檔案清單、SEQN 與紀錄粒度說明、已有配對彙總。

    可請求的產物/交付目標: 合併規則說明、組件配對核對表與樣本流轉紀錄草稿。

  2. 可直接改寫的任務輸入

    依我提供的組件與實際彙總,整理檔案合併順序、SEQN 關係、適用人群與配對核對表,標出需測試的一對多情況;沒有執行紀錄就不聲稱合併成功。

  3. 人工核對

    本頁實際計數來自所列官方檔案;不能把它們複製成你的資料,也不能把組件不適用稱為失訪。

先固定來源與記錄粒度

兩個文件均為 NHANES 2017–2018 公共發佈組件;不要把不同週期或一人多行的組件直接套進本例。

示例文件、適用範圍與合併前檢查
文件需要確認本例核對結果
DEMO_J.XPT人口學 Codebook、SEQN、RIDAGEYR;確認一人一行9,254 行;SEQN 非空且不重復;其中 6,161 人年齡 ≥16 歲
BPQ_J.XPT血壓問卷 Codebook、SEQN、BPQ020;確認適用年齡和一人一行6,161 行;SEQN 非空且不重復;官方說明適用於 16 歲及以上參與者

BPQ_J 的適用範圍來自該組件的 Eligible Sample 和 BPQ020 Codebook。人口學文件的人數不是 BPQ020 的研究分母;先把組件適用條件和合併鍵核對清楚,再定義具體問題的納排規則。

按 SEQN 合併前後做五次核對

  1. 只取同週期官方文件

    從下方 CDC/NCHS 文件鏈接取得 DEMO_J.XPT 和 BPQ_J.XPT,並打開各自 Codebook。記錄週期、組件、訪問日期、適用人群和變量定義;不要用文件名相似或第三方鏡像替代來源核驗。

  2. 先查鍵,而不是直接拼列

    分別統計行數、非空 SEQN 個數與重復 SEQN 個數。本例 DEMO_J 為 9,254 個唯一鍵,BPQ_J 為 6,161 個唯一鍵,兩邊均無空鍵或重復鍵,因此本例可檢查參與者一對一合併。若出現一對多或重復鍵,應先回到組件文檔確認記錄粒度,不要任意去重。

  3. 用外連接審計匹配,再選擇分析所需的連接方式

    按 SEQN 做保留兩側來源標記的外連接:兩側都有為 6,161,只有 DEMO_J 為 3,093,只有 BPQ_J 為 0。若以 DEMO_J 為左表,左連接仍為 9,254 行,但 3,093 行沒有 BPQ 字段;內連接或以 BPQ_J 為基準則為 6,161 行。連接方式是研究問題與組件適用人群的選擇,不是為了得到較大的數字。

  4. 解釋 3,093 人,而不是命名為失訪

    檢查 DEMO_J 中僅左側的記錄:本例 3,093 人全部未滿 16 歲;其餘 6,161 名 16 歲及以上參與者均與 BPQ_J 匹配。這與 BPQ_J 的官方年齡範圍一致。這個 3,093 是本例組件適用範圍造成的文件差異,不能稱為縱向隨訪中的失訪,也不能推廣到其他週期或組件。

  5. 再查字段編碼與研究樣本

    BPQ020 問的是是否曾被醫生或其他衛生專業人員告知患高血壓,不是本次實測血壓。Codebook 與文件均顯示回答“是”2,137、“否”4,014、“不知道”10;如果預設分析僅保留“是/否”,可用回答人數為 6,151,而不是把編碼 9 當作數值或把這 10 人歸因於文件合併。後續研究還須另行定義年齡、其他字段缺失、適用權重、分層與 PSU。

把兩類人數變化分開記

下表是本例官方文件的未加權人數核對,不是總體估計或正式分析的納排流程。

2017–2018 DEMO_J 與 BPQ_J 的示例樣本流轉
核對階段人數應如何解釋
DEMO_J 參與者9,254人口學組件全部記錄;SEQN 唯一
僅在 DEMO_J3,093本例均未滿 16 歲;不在 BPQ_J 的適用年齡範圍內
DEMO_J 與 BPQ_J 匹配6,161兩側 SEQN 一對一;BPQ_J 單側為 0
BPQ020 為“是”或“否”6,151另有 10 個“不知道”;僅用於說明字段編碼檢查,非正式研究樣本

可復算口徑:分別讀取兩份官方 XPT,只取 SEQN(人口學另取 RIDAGEYR,問卷另取 BPQ020);先驗證每側 SEQN 唯一,再對兩側 SEQN 做外連接並統計 both、left_only、right_only;在 left_only 中統計 RIDAGEYR < 16,最後按 BPQ020 Codebook 統計 1、2、9。上述計數也可用 R、SAS 或 Python 重算,不依賴某一種軟件的自動篩選。

同週期橫向合併,不等於跨週期拼接

這裡的 SEQN 合併是把同週期兩個參與者級文件按同一個人橫向鏈接。跨週期分析還要追加不同週期記錄,並逐項核對變量定義、測量方法、編碼、設計與權重;不能把本例的連接方式、人數或權重直接套到另一週期。

本例沒有執行複雜抽樣估計,也不代表 RigorMed 能自動合併任意 NHANES 文件。正式研究應先凍結問題和納排規則,核對實際組件的 Analytic Notes,再選擇適用的調查權重、分層、PSU 與缺失處理。

常見問題

為什麼人口學有 9,254 人,血壓問卷只有 6,161 人?

本例 BPQ_J 官方適用年齡為 16 歲及以上。兩文件核對顯示,人口學單側的 3,093 人全部未滿 16 歲;不能把人數差直接說成數據丟失、拒答或失訪。

所有 NHANES 文件都能按 SEQN 一對一合併嗎?

不能。先看每個組件的一行代表一個參與者、一次記錄還是其他粒度,並查空鍵與重復鍵。只有當前組件和週期證實一對一時,才能沿用本例的匹配檢查。

合併後 6,161 人就是正式統計樣本嗎?

不是。BPQ020 還有特殊回答編碼,其他研究變量也有自己的適用人群和缺失。正式樣本取決於預先定義的問題、納排條件、完整數據、調查權重和分析方案。

核驗來源

以下官方來源核驗於 2026-09-28 / RigorMed: 2026-10-13,發布前將再次檢查存取條件與更新時間。

  1. CDC/NCHS:2017–2018 DEMO_J 人口學數據與 Codebook
  2. CDC/NCHS:2017–2018 DEMO_J 官方 XPT 文件
  3. CDC/NCHS:2017–2018 BPQ_J 問卷數據與 Codebook
  4. CDC/NCHS:2017–2018 BPQ_J 官方 XPT 文件
  5. CDC/NCHS:2023–2024 SAS 合併代碼示例(僅參考連接方法)
  6. CDC/NCHS:NHANES 調查方法與分析指南

帶著材料開始

把合併規則寫成可檢查的檔案交接說明

帶著有權使用的材料,依本頁任務範例提交到工作台;按執行前的材料與積分提示確認,再複核可審閱的成果。