跳到主要內容

發表文章

Python與SAS資料處理入門--累加處理

當資料歸戶需要加總多筆數值或累計次數成為一筆資料時就會需要用到累加的處理。   我們在做資料處理時,經常拿到的資料並非整理完成可直接進行統計分析的檔案。資料的呈現可能是個流水帳的方式,也就是同一個 ID 或是歸戶編號會有多筆資料,而在分析上我們需要將資料整合成 1 筆,才能進行後續的處理。 ²   情境 1 :就診次數 每次的就診紀錄就是 1 筆資料,但每個人可能會有不只一次的就診紀錄,如果我們需要分析每個人的平均就診紀錄時,就會需要累計這段時間的就診次數。   ²   情境 2 :每月支出 另一個簡單好理解的範例是計算每個月的花費支出,每個月都有多次的消費支出紀錄,那如果需要知道每個月支出的總金額,就需要以月為歸戶單位,加總該月的花費。   以簡單例子進行操作 延續之前的資料,以手上這份滿意度調查問卷來操作,累計每個人填答的次數。 在進行累計的操作前必須十分清楚資料需要歸戶的單位。以 情境 1 來說,歸戶的單位是人;情境 2 歸戶的單位是月份。   以 SAS 進行資料累計 proc sort data= y_2019; by id Q_date; run; /*依照ID 跟填寫日期做排序*/ data test; set y_2019; by id Q_date; if first.id then count=0; /*這邊會用到if…then的概念*/ count+1; if last.id; /*保留最後1筆ID的資料*/ keep id count; run; 這邊會需要用到排序的語法,在歸戶之前需要 依照歸戶的單位進行排序 。爾後 使用 if … then 的概念進行累計 ,這部分可理解為,依照 ID 排序後,遇到每個不同 ID 的第一筆資料, count 這個變項的數值就歸零,從新開始累計,每遇到相同的 ID 就加 1 。最後 歸人,保留每個人最後 1 筆的資料 。 執行完成後就可以得到每個人問卷填寫的次數。   以 Python 進行資料累計 y_2019["count"]= y_2019['ID'].groupby(y_2019["ID"]).cumc...

如何快速註冊統合分析題目~以Cochrane Library為例

  初步檢索心中的愛 當然先要確定題目是否被捷足先登,這時候可以直接在 Cochrane Library 或 PudMed 上直接搜尋,若偵蒐尋到想做的題目也不要氣餒,思考文章中是否還有遺漏了甚麼或是再增加哪方面的資料,就可以更完整,可嘗試轉個彎註冊試試。 什麼是 The Cochrane?? 於 1992 年在英國成立,原本名稱為考科藍合作組織 (Cochrane Collaboration) , 2015 年考科藍合作組織正式更名為 " 考科藍 (The Cochrane)" , The Cochrane Library 是由評論小組蒐集、彙整、 評審關於醫療保健相關資料而發表的實證資料庫,對其感興趣的消費者、臨床醫師、政策制定者、研究人員、教育人員、學生和其他人士皆可使用。全球擁有 14 個區域中心及超過 26 個國家或地區分支中心,台灣在 2015 年正式成為官方認可的單位,除了英文的官網外,也可從 台灣的官網 進入獲取資訊。 步驟流程 Step 1 :檢索主題 進入 Cochrane.org 首頁後點選 Cochrane Library à 進一步點選 Advanced search ,即可輸入關鍵字查詢。 Step 2 :找尋 Cochrane Review Groups 在首頁點選 About 選擇 Cochrane Review Groups. Step 3 :點選適合主題的組別 確認自己的題目適合哪一組,每組分別有次組別,選擇次組別後進入。 Step 4 :找尋聯絡信箱 進入次組別後,點選 Contact ,這時候就可以看見 email 信箱。 Step 5 :寄信至信箱 信件內容可先簡短說明 protocol ,等對方回信後,確認此主題可註冊,會寄正式表格。 Step6 : 等待回應 屆時填答完正式表格,寄回等待審查,至少 2 周,但會依主題不同時間略有不同。   以上完成後,就是勞心勞力的開始了,不管是要做 Systematic Reviews 或 Meta analysis 皆建議可先註冊,若註冊完要對得起自己的研究道德,註冊卻不完成研究,會讓對方對這個國家的申請者有不好印象,對未來想做這方面研究的人不易申請通過,請為自己及別人留個善意,也預祝大家旗開得勝。

如何快速註冊統合分析題目~以PROSPERO為例

初步檢索心中的愛 當心目中有一個理想題目時,為避免地球上另一個人也同時跟你想的一樣,而且還比我們早發表,若等我們發表時才發現,當下一定很扼腕,有了註冊系統除了幫自己先占好位子,也可以同時確認這個題目是否已經有人正在做了,不用浪費時間投注在上面。很多人其實不曉得實際上到底要如何註冊,以下一起註冊吧。 什麼是 PROSPERO??   PROSPERO (International prospective register of systematic reviews) 是一個國際前瞻性系統性文獻回顧評價系統,由美國國立衛生研究院 NIHR ( National Institute for Health Research )資助,由英國約克大學 CRD(Centre of Reviews and Dissemination) 創立,針對將已完成的評價或正進行中的計畫做紀錄。 目的:避免重複並減少報告偏見的機會,增加透明性。                 步驟流程 Step 1 :檢索主題 先確認其他人是否對這主題感興趣,有人捷足先登了嗎 ?? 也可以確認目前流行的趨勢是哪類型的研究等。 Step 2 :註冊帳號 ID 先到 PROSPERO 官網 ,填寫基本資料後註冊 ID 。 Step 3 :點選註冊文獻 review 要需先有帳號後才能註冊題目,進入頁面後依指示一步一步操作。 以下是網頁步驟,依研究對象是人群還是動物選擇按鈕點選,一般我們都是人群研究,選紫色。同時須確認以下五步驟是否都經過檢驗了。 第 1 步 檢查納入標準。 第 2 步 確保您的 protocol 處於(接近)最終形式。 第 3 步 搜尋 PROSPERO ,以確保評論尚未被註冊。 第 4 步 搜尋 PROSPERO ,以確保您沒有不必要地重複由另一個團隊進行的審核或先前已註冊的審核 第 5 步 開始註冊 Step 4 :點選相關事前準備工作進度。 這裡有一系列問題須皆回答完,才能進行下一步...

Python與SAS資料處理入門-欄位基本運算

透過運算將收集的數據轉換為所需的資訊 收集到的資料有時不見得可以直接套用,必須經過轉換、計算的程序方能使用,這時就需要使用到基本運算的功能。 以簡單例子進行操作 假定手上有一份滿意度調查的問卷有 10 個問題,其中欄位 Q1 至 Q3 需計算平均分數。 以 SAS 進行資料運算 data test; set y_2019; Q_sum=Q1+Q2+Q3; /*加總*/ Q_mean=mean(Q1,Q2,Q3); /*平均*/ Q_round=round(Q_mean,0.1); /*小數點後一位做四捨五入*/ run; 以 Python 進行資料運算 y_2019["Q_sum"] =y_2019[["Q1","Q2","Q3"]].sum(1) #加總 y_2019["Q_mean"]=y_2019[["Q1","Q2","Q3"]].mean(1) #平均 y_2019["Q_round"]=round(y_2019["Q_mean"],1)y_2019["Q_round"]=round(y_2019["Q_mean"],1) #小數點後一位做四捨五入 ü   sum(1) 是橫向的加總, sum(0) 是縱向的加總, mean 函數的表示也是相同道理。 常見的運算函數整理 了解 SAS 與 Python 基本運算模式,可以自行搭配組合,設計出符合自己資料的型態,例如 BMI 的計算、追蹤期間、服用藥物時間等,讓我們的資料更能展現出價值 。

Python與SAS資料處理入門-變項合併與名稱修改

將舊有的變項合併創建新變項 在處理大數據時常常會遇到需橫跨多個資料庫間進行資料串連,因此可能會遇到幾個問題 : (1) 不同資料庫間串連的鍵值欄位可能有多個,例如 :ID 與生日相同的資料才可互相串連。 (2) 不同資料庫間串聯的鍵值不盡相同。 (3) 要串聯的檔案之間有名稱相同的欄位,前幾篇文章有提到欄位合併的處理在 SAS 的語法上要注意檔案合併時欄位名稱相同會覆蓋的問題。 針對第 1 跟第 2 個問題,可先依據串聯不同資料庫鍵值的欄位需求先合併成一個 unique id ,後續直接用這個鍵值進行串連。合併後的新鍵值除了做為串檔用外,當資料處理時遇到原先鍵值不 unique 的情況,也會 透過變項合併產生新的 unique id 來取代原先的 id 鍵值 。 對於問題 3 ,檔案合併遇到命名相同的欄位產生 相互覆蓋 的問題,這部分會透過變更名稱的方式來處理。 以簡單例子進行練習 手上有 2 種檔案 : (1) 調查的基本資料,裡面包含 ID 、 Gender 、 Birthday 、 City( 戶籍地 ) 等資訊。 (2) 調查的結果,裡面包含 ID 、 Birthday 、 City( 收案地點 ) 、 Q_date( 受訪日期 ) 以及問卷題項。 問題 1: 鍵值不 unique 觀察第一份資料可以發現 ID 編號為 007 的有兩個且生日不同,因此判定可能是不同的人,編號重複編列,在這樣的情況下如果僅用 ID 串聯結果可能會是這樣。 在基本資料 (A) 的那兩筆 ID 為 007 的資料同時都會與調查結果 (B) 中 ID 為 007 那筆資料串連,但很明顯的是 B 資料的 007 合併生日判斷後可以發現不屬於 A 檔另一筆 007 的數據,因此原本 unique 的 ID 不為 unique ,因此合併 ID 與 Birthday 成為一個新的 unique ID 做為鍵值。 問題 2: 不同檔案有相同的名稱 這兩個檔案中有 2 個欄位名稱相同, Birthday 與 City 。在考量 Birthday 與 ID 將合併為新鍵值後,可暫擱一邊不需特別處理。但 City 部分的問題就比較大了,雖名稱相同但實際上代表的含意不同,如...