Заполнение пропусков в массиве

Nov 15, 2017 19:08


Коллеги, добрый день!

Предположим есть массив типа:

ID
V1
V2
V3
V4
V5

1
1

5
2

2

1

3
2

3
3

5
4

4

2
3

2

Как можно с помощью синтаксиса можно оперативно заполнить пропуски, таким образом, чтобы значения автоматически рассчитывались примерно следующим образом (для V3 ( Read more... )

Данные: пропуски и их замена, Данные: преобразование значений/подсчеты

Leave a comment

Comments 7

gorgonops November 18 2017, 12:39:14 UTC
Ваши пункты c и d написаны недостаточно четко: непонятно, откуда взялись 3 и 3, но 1 и 2.

Используйте команды VECTOR для адресации к переменным и LOOP (...END LOOP IF) для подсчета пустых ячей слева и справа. Ну и ф-ции MISSING() или SYSMIS(). Уверен, что вы разберетесь.

Reply

_germanik_ November 20 2017, 12:13:41 UTC
Вот проблема и использованием векторов, то что длина векторов для каждого наблюдения будет индивидуальной, а SPSS, насколько я знаю, работает с векторами только для массива в целом. То есть для каждого наблюдения придется писать свой кусок синтаксиса, что не очень удобно.

Reply

gorgonops November 20 2017, 12:35:35 UTC
Все (внематричные) преобразования делаются в SPSS покейсно. Т.е. весь ваш синтаксис команд-преобразований исполняется для 1-го кейса, потом для 2-го, и т.д. Команда VECTOR объединяет последовательно идущие переменные в череду, так что к ним можно обращаться индексно (vec(5) - 5-я переменная). Обычно нет никакой нужды в том, чтобы для разных наборов кейсов иметь свою VECTOR потому, дескать, что есть пропуски. Но, вообще говоря, вам никто не запрещает разбить массив на несколько и работать раздельно, если считаете, что в пропусками хлопотно.

Reply

_germanik_ November 20 2017, 12:39:30 UTC
У меня массив 1,5 тыщи пременных длиной (и на них всего 4 заполненных значения) и 1,5 тыщи наблюдений, я с таким подходом до мышей доэволюционирую :)

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

Reply


nokh November 20 2017, 11:52:49 UTC
Если вам нужно заполнить пропуски именно по вашему алгоритму, то моё сообщение бесполезно. Просто заполнение пропущенных значений - то направление, которое реализовано в SPSS лучше, чем в других статистических пакетах. Я имею в виду встроенные алгоритмы множественной импутации данных. Неоднократно сталкивался с тем, что люди изобретают велосипед там, где всё давно отработано до деталей. Если вам известно об импутации, но она почему-то не устривает - прошу прощения за офтоп.

Reply

_germanik_ November 20 2017, 12:08:03 UTC
Здесь как раз встроенное в SPSS средства импутации данных не подходят и приходится изобретать велосипед. Просто это очень краткий пример, нам самом деле там ширина массива под 1,5 тыщи переменных и на каждое наболюдние всего 4 значения.

Reply


gorgonops November 20 2017, 12:38:41 UTC
Вы можете также подумать о том, чтобы транспонировать массив (превратить кейсы в переменные). Тогда вы можете использовать возможности, существующие в CREATE, AGGREGATE.

Reply


Leave a comment

Up