2016-06-13 5 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

Вы можете проверить изменения идентификатора в вашем расчете, но проще использовать SHIFT ЗНАЧЕНИЯ команду вместе с разрезание файлов. SHIFT VALUES не будет пересекать границы разделения.

+0

Спасибо за ответ :) Я не уверен, что понимаю, что вы имеете в виду с тестом на изменение идентификатора. Как мне это сделать?Есть ли для него синтаксический код? Должен ли я разделять файлы по idnr или идентификатору сегмента? Как я могу убедиться, что результаты из запаздывания вставлены в первые 4 случая каждого человека? Извините за многие вопросы :) – Karatekid

+0

Команда shift с разделенными файлами работала очень хорошо, однако у меня проблема с наличием значения в 4 самых верхних случаях. сплит-файл по sid. SHIFT VALIA 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. 
Смежные вопросы