Я пытаюсь создать имена переменных SAS на основе данных, содержащихся в других переменных. Например, я мог бы начать с
Obs Var1 Var2
1 abc X
2 def X
3 ghi Y
4 jkl X
и я бы хотел закончить
Obs Var1 Var2 X Y
1 abc X abc
2 def X def
3 ghi Y ghi
4 jkl X jkl
У меня есть один способ сделать это, но для этого требуются несколько уродливые макросы, чтобы сначала создать необходимые переменные (используя оператор длины), а затем создать целую серию пронумерованных макропеременных (по 1 на наблюдение), которые позже вызываются внутри цикла шага данных. . Это работает, но сложно, и я не думаю, что он хорошо масштабируется для реальных данных, которые содержат несколько переменных для создания для каждой строки и несколько тысяч строк.
Я также пробовал что-то с массивами - сохранять имена переменных в макросе var, использовать его для генерации оператора массива и пытаться отслеживать, какой индекс массива требуется для каждой новой переменной, но это также сложно.
Что действительно могло бы помочь, было бы что-то аналогичное
vvaluex(var2)=var1
за исключением того, что vvaluex не может быть слева от равенства. Есть мысли или идеи?