Как массово копировать строки в зависимости от счетчика в SPSS или Excel

Проблема у меня такая:

У меня есть база данных, полная рентгеновских снимков и сопутствующей информации для длинного списка пациентов, упорядоченного по идентификатору пациента. Что я хочу сделать, так это найти время первого рентгена, выполненного для каждого пациента, и я хочу заполнить его для каждого рентгена этих пациентов. Проблема в том, что у каждого пациента часто есть несколько рентгеновских снимков, и я не знаю, как скопировать данные из другого столбца в мой столбец timeOfFirstXray.

Например; (извините за мое очень плохое форматирование)

ptid ...дата и время рентгеновского снимка .....дата и время первого рентгеновского снимка

4 .......21/01/2011 4:30 ............21/01/2011 4:30

4 .......22 февраля 2011 г. 5:11 ...........21 января 2011 г. 4:30

4 .......25/05/2011 5:00 ........... 21/01/2011 4:30

5 .......29/7/2000 3:00 ............ 29/7/2000 3:00

5 .........30/7/2000 4:00 ......... 29/7/2000 3:00

5 ........ 31/7/2000 5:00 ......... 29/7/2000 3:00

5 .........8 января 2000 г. 1:00 ....... 29 июля 2000 г. 3:00

6 .........9 января 2002 г. 2:00 ........... 9 января 2002 г. 2:00 >

8 ........ 10 марта 2008 г. 3:23 ......... 10 марта 2008 г. 3:23

8 .........10.04.2008 5:00 ......... 10.03.2008 3:23

8 ........ 10.05.2008 9:00 ......... 10.03.2008 3:23

Мой псевдокод:

Установите счетчик на 0, инициализируйте переменную даты значением даты первой строки для каждой строки, если счетчик ‹ идентификатор пациента, счетчик ++ до тех пор, пока он не сравняется с идентификатором, установите переменную даты на значение даты в этой строке и установите это значение как timeOfFirstXray для строки. иначе, если счетчик == идентификатор пациента, скопируйте существующее значение в переменной даты в timeOfFirstXray для этой строки

Я никогда раньше не использовал SPSS или Excel для такого рода вещей, поэтому в основном то, что я ищу, это переведенное выше.

Спасибо за чтение!


person user1481902    schedule 11.08.2012    source источник
comment
Для SPSS посмотрите на команду Aggregate. Вы можете агрегировать идентификатор пациента и выбрать новую переменную в качестве минимального значения. Это будет ваше первое рентгеновское свидание.   -  person Andy W    schedule 11.08.2012


Ответы (2)


Вот вариант Экселя. Предполагая, что ваши данные начинаются со строки 2, введите эту формулу в C2 и скопируйте вниз. Обратите внимание, что это формула массива и ее нужно вводить с помощью Ctrl-Shft-Enter. (Если все сделано правильно, вы увидите фигурные скобки вокруг формулы.) Затем просто скопируйте до нужного места:

=MIN(IF(($A$2:$A$12=A2)*($B$2:$B$12),$B$2:$B$12))

введите здесь описание изображения

Настройте свои диапазоны, чтобы они соответствовали вашим данным. Обратите внимание, что он получает самую раннюю дату, даже если они не в хронологическом порядке в ваших исходных данных.

Если вас интересует логика формулы, см. этот пост в моем блоге.

Если вы хотите просто показать минимумы, вы можете сделать что-то похожее на комментарий Энди В. выше, используя сводную таблицу в Excel (здесь показан Excel 2010). Ключ в том, чтобы «показать значения как» Min:

введите здесь описание изображения

person Doug Glancy    schedule 11.08.2012
comment
Большое спасибо вам обоим за ваши ответы! - person user1481902; 12.08.2012

Вот вариант SPSS.

`do if (missing(lag(ptid)) or ptid ne lag(ptid)).
compute dateandtimeof1stxray = dateandtimeofxray.
end if.
leave dateandtimeof1stxray.`

Это предполагает, что dateandtimeof1stxray не существует во входном наборе данных.

HTH, Джон Пек

person JKP    schedule 13.08.2012