[程式] SAS 用藥日期重複計算
[軟體程式類別]:
SAS
[程式問題]:
資料處理
[軟體熟悉度]:
中(3個月到1年)
[問題敘述]:
該問題是健保資料庫的用藥天數重複問題。
先簡單說明問題
data output;
set output;
array run{10} day1 - day10;
run;
ID start_date end_date day1 day2 day3 day4 day5 day6 day7 day8 day9 day10
A 1 5
A 3 8
第一筆起始日期為1結束日期為5,但我該如何在day1-day5填上1的資料。
同樣第二筆資料,我該如何在day3-day8填上1的資料說。
以下為詳細說明
ID 就醫日期 給藥天數 就醫日期數值 結束日期數值 上次結束日期數值
A 20061002 30 17072 17101 .
A 20061003 30 17076 17105 17101
A 20061008 30 17082 17111 17105
就醫日期數值是將就醫日期轉換成數值,
結束日期為就醫日期數值加上給藥天數。
一般來說,用藥天數重複,可將該次的結束日期數值,
與下次的就醫日期與結束日期運算,可以使用LAG,DIF,IFN 器計算。
但資料庫有時候存在很多例外。
例如該病人1002領藥30天,1003又領藥30天,1008又領藥30天。
的確是呈現藥物濫用,目前想要計算重複用藥天數。
例如該病人的用藥天數如下: 後方切時間點以方便說明。
第一筆 17072-17101 : 17072 - 17076 - 17082 - 17101
第二筆 17076-17105 : 17076 - 17082 - 17101 - 17105
第三筆 17082-17111 : 17082 - 17101 - 17105 -17111
由上面可知道,在17076-17081,這6天是兩筆資料重複。
17082-17101,這20天是三筆資料重複。
17102-17105,這4天是兩筆資料重複。
如果不算重複次數,可以知道在這三筆資料總共有30天重複用藥天數。
請問這要該如何計算呢?
[程式範例]:
目前想到比較簡單的方法是
由於我全部的追蹤時間是11年,因此先往右開11年 (共4701的欄位 day14976 -day18992。
第一筆資料為17072-17101 ,就day17072-day17101都補上1。
第二筆資料為17076-17105,就day17176-day17105都補上1。
..
之後再加總某個日期欄位,如果大於1,表示當天有資料重複。
不知道各位是否有其他建議方式? 再請指教,謝謝。
-----------------------------------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.55.184
※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1436941019.A.018.html
※ 編輯: shga (111.250.55.184), 07/15/2015 14:17:47
推
07/16 01:52, , 1F
07/16 01:52, 1F
→
07/16 01:52, , 2F
07/16 01:52, 2F
推
07/16 02:39, , 3F
07/16 02:39, 3F
推
07/16 14:13, , 4F
07/16 14:13, 4F
→
07/16 14:13, , 5F
07/16 14:13, 5F
→
07/16 14:13, , 6F
07/16 14:13, 6F
→
07/16 14:13, , 7F
07/16 14:13, 7F
→
07/16 14:13, , 8F
07/16 14:13, 8F
→
07/16 14:13, , 9F
07/16 14:13, 9F
→
07/16 14:13, , 10F
07/16 14:13, 10F