Я пытаюсь пропустить столбец с 50000 строк. Я хотел бы сравнить значение в say i с (i + 1). Единственный способ, которым я знаю, как это сделать, - определить массив. Однако существует только одна переменная, например, имя столбца переменных, например. Col, но 50000 наблюдений внутри столбца. Когда я использую:SAS: Сравнить значения в столбце
array Transform {50000} Col
где Transform это имя массива и Col это имя столбца в моем наборе, я получаю ошибку индекс, как существует слишком много переменных, то есть только один против 50000. Я попытался заменить {50000} с {50000,1} (и даже {*}), поэтому компилятор распознает, что есть 50k наблюдений и только один столбец. Далее я попытался перенести набор данных, но это кажется трудным, так как мне нужно добавить другую переменную к набору данных позже, которая зависит от значений i и (i + 1).
Есть ли способ прокрутки столбца для сравнения i и (i + 1) с использованием любого метода (не обязательно массива)? Спасибо за помощь :)
Привет, Кейт, это может сработать. Могу ли я реализовать цикл IF, используя этот метод. В идеале я бы хотел использовать методы, которые являются «естественными», т. Е. Цикл «DO». Я довольно новичок в SAS, но не должен быть метод для циклического ввода записей строк, который более обобщен, например, я должен был сравнить i-й и (i + 2) -й записи? – Black
@Blackholify Нет, в базе SAS нет метода для циклизации, как вы предлагаете. SAS - это язык на основе строк; код, который вы пишете, выполняется по каждой строке набора данных (по умолчанию) по одному за раз. SAS/IML - это матричный язык, который делает больше того, что вы предлагаете (если у вас есть лицензия, укажите это в OP). – Joe
Привет, Джо, спасибо за предложение. Я не знал, что SAS является языком на основе строк, но это объясняет многое. У меня нет SAS/IML только базы SAS. – Black