SAS IML-эквиваленты Alter Table и Update
Прав ли я, что для добавления нового столбца в существующий набор данных SAS я использую оператор Alter Table (и, для заполнения нового столбца, оператор Update) в proc sql? Если да, каковы эквивалентные операторы в proc iml (или это можно сделать даже в IML)?
1 ответ
Похоже, вы спрашиваете о горизонтальной конкатенации. Вы можете использовать оператор конкатенации (||) для добавления столбцов одной матрицы к другой, при условии, что обе матрицы имеют одинаковое количество строк. Например, следующий оператор объединяет вектор 2x1 с матрицей 2x3. В результате получается матрица 2х4:
proc iml;
x = {1 2 3,
4 5 6};
y = {7, 8};
z = x || y;
print z;
Имейте в виду, однако, что это выделяет новую матрицу (z) и копирует содержимое матриц x и y. Поэтому это не так эффективно, как создать матрицу 4x2 с самого начала, а затем использовать подкриты для заполнения столбцов. Подробности см. В статье "Друзья не позволяют друзьям объединять результаты в цикле".