2016-06-13 29 views
0

如何獲得滯後/潛在顧客功能,以處理數據庫中每位患者的第一個病例號?重建數據庫

我有一個1k +變量和800k行的數據庫。每一行都是對一段血管的干預,一名患者可能有幾行=在不同的血管段上進行多次干預,但都在相同的住院治療內。有4艘船,當我重組數據庫時,每行有4例=干預。我曾試圖發佈以下數據:

data list list /id_nr (f6) segment_id_nr (f6) date (date9) C_RCA (f6) C_LM (f6) C_LAD (f6) C_LCx (f6) VESSEL(a3) max_stenos (f6) Culprit_PCI (f6) Procedure_type (f6). 
BEGIN DATA 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, RCA, 3.00, 1.00, 2.00 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LM, 1.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LAD, 4.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LCX, 1.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, RCA, 3.00, 1.00, 2.00 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LM, 1.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LAD, 4.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LCX, 1.00, , 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, RCA, 3.00, , 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, LM, 1.00, , 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, LAD, 4.00, 1.00, 2.00 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, LCX, 1.00, , 
END DATA. 
dataset name OrigData. 

它應該是這個樣子:enter image description here

我想要的是將所有數據從最後兩個變量相結合,包含前4行內後除去剩餘的行,這樣我有每住院4行,對應於介入該行中的每一行見下文,我已複製粘貼在Excel數據:

data list list /id_nr (f6) segment_id_nr (f6) date (date9) C_RCA (f6) C_LM (f6) C_LAD (f6) C_LCx (f6) VESSEL(a3) max_stenos (f6) Culprit_PCI (f6)   Procedure_type (f6) Culprit_PCI2 (f6) Procedure_type2 (f6). 
BEGIN DATA 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, RCA, 3.00, 1.00, 2.00,1.00, 2.00 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LM, 1.00, , , , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LAD, 4.00, , ,1.00, 2.00 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LCX, 1.00, , , , 
END DATA. 
dataset name OrigData. 

我已經與滯後/超前功能,但我試圖不能得到它掃

我有以下代碼:

compute seq = $casenum. 
execute. 
SORT CASES BY seq. 
CREATE PCI_other_segmentvessel = LAG(Culprit_PCI,4). 
CREATE proceduret_type2 = LEAD(procedure_type). 
Execute. 

這是可能的嗎?它可能是一個滯後

IF sid= lag(sid) and Vessel=lag(Vessel) PCI2 = lag(Culprit_PCI,4). 
Execute. 

這些都沒有正常工作。你能指出我正確的方向嗎?我不知道數據是否可以工作,但是如果複製粘貼到excel中,它就可以工作。

親切的問候

+0

我覺得很難理解你的現有數據的結構,你試圖去的結構。請找一種更清楚地發佈您的數據樣本的方法 - (例如,查看數據列表 - 開始數據 - 結束數據),並在此發佈完整的命令。 –

+0

我對此很陌生,並盡力做到最好。我無法真正獲得數據列表的工作,但設法添加一個數據集如何在Excel中的形象,我希望它可以幫助。 – Karatekid

+0

我用原始數據樣本的完整數據列表命令編輯了您的文章。請使用此示例創建目標數據,並明確說明您需要的是什麼。 –

回答

0

可以測試中在計算中ID的變化,但它更容易使用的位移值與分割文件一起指揮。 SHIFT VALUES不會跨越分界線。

+0

感謝您的回覆:)林不知道我明白你的意思與測試ID的變化。我怎麼做?有沒有它的語法代碼?我應該通過idnr還是段ID來分割文件?我如何確保在每個人的前4個案件上粘貼滯後結果?對不起,有很多問題:) – Karatekid

+0

帶分割文件的shift命令工作得很好,但是我有4個最上層的情況。 由sid拆分文件。 SHIFT VALUES VARIABLE = Culprit_PCI RESULT = CPCI2 SHIFT = 4. 有沒有辦法改變4? – Karatekid

0

你說你在經過一些重組之後已經達到了這種狀況 - 我強烈建議你用原來的結構和最終結構開始一個新的問題,我們很有可能找到一個更簡單的捷徑沒有經過這一點。
假設您必須經歷這一點,以下語法會創建與您的目標結構非常相似的內容,包括刪除多餘的行。我希望這有助於壽我沒有絕對的把握我完全理解你所需要的:

*creating sample data (a bit different from your original sample, to help the demonstration work). 
data list list /id_nr (f6) segment_id_nr (f6) date (date9) C_RCA (f6) C_LM (f6) C_LAD (f6) C_LCx (f6) VESSEL(a3) max_stenos (f6) Culprit_PCI (f6) Procedure_type (f6). 
BEGIN DATA 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, RCA, 3.00, 1.00, 2.00 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LM, 1.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LAD, 4.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LCX, 1.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, RCA, 3.00, 2.00, 1.00 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LM, 1.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LAD, 4.00, , 
1, 5, 12-Jun-06, 1.00, .00, .00, .00, LCX, 1.00, , 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, RCA, 3.00, , 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, LM, 1.00, , 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, LAD, 4.00, 1.00, 2.00 
1, 5, 12-Jun-06, .00, .00, 1.00, .00, LCX, 1.00, , 
END DATA. 
dataset name OrigData. 

* removing empty lines . 
select if not missing(Culprit_PCI). 

* counting occurrences of each vessel to use as index. 
sort cases by id_nr segment_id_nr date VESSEL. 
compute tmp=1. 
split file by id_nr segment_id_nr date VESSEL. 
CREATE ProcNum=CSUM(tmp). 
split file off. 

* restructuring. 
format ProcNum(f6). 
sort cases by ‎‪id_nr‬‎ ‎‪segment_id_nr‬‎ ‎‪date‬‎ ‎‪C_RCA‬‎ ‎‪C_LM‬‎ ‎‪C_LAD‬‎ ‎‪C_LCx‬‎ ‎‪VESSEL ‎‪max_stenos ProcNum. 
casestovars /id= ‎‪id_nr‬‎ ‎‪segment_id_nr‬‎ ‎‪date‬‎ ‎‪C_RCA‬‎ ‎‪C_LM‬‎ ‎‪C_LAD‬‎ ‎‪C_LCx‬‎ ‎‪VESSEL ‎‪max_stenos/index ProcNum /drop=tmp/separator="_"/groupby=index.