SAS, если существует переменная, и меньше 1, тогда [duplicate]

Вы должны использовать eval () для выполнения любого кода скрипта, который вы вставили в виде текста DOM.

MooTools сделает это за вас автоматически, и я Конечно, jQuery также будет (в зависимости от версии. jQuery версии 1.6+ использует eval). Это экономит много хлопот по разборке

3 ответа

Это очень поздний ответ / комментарий, но этот метод работает для меня и довольно прост (SAS 9.4). В приведенном ниже примере я использовал отсутствующие числовые и символьные переменные и присвоил значение отсутствующей символьной переменной.

    data try; 
input var1 var2 var3;
datalines;
7 2 2
5 5 3
7 2 7
; 

    data try2; 
length var4 $20;
length var5 8;
set try; 
var4 = var4; 
if var4 = ' ' then var4 = 'Not on Source File';
run;
-1
ответ дан Skip 18 August 2018 в 17:25
поделиться
  • 1
    Это тот же ответ, что и предыдущий ответ от AndyBean – Snorex 30 August 2016 в 23:24
  • 2
    Нет, если Мюрай хочет быть информатором о несуществующей переменной на intate deataset! – Dirk Horsten 19 April 2017 в 08:46
  • 3
    Это creates переменная var4, а не тестирование, если она существует. То, что вы тестируете, - это пустая или нет переменная (новая или старая). – Tom 19 June 2018 в 16:38

Назначьте var4 самому себе. Назначение создаст переменную, если она не существует, и оставьте содержимое на месте, если это произойдет.

data try; 
    input var1 var2 var3;
    datalines;
    7 2 2
    5 5 3
    7 2 7
; 

data try2; 
    set try; 
    var4 = var4; 
run;

Просто помните, что создание var4 таким образом, когда оно не существует, будет использовать атрибуты переменной по умолчанию, поэтому вам может понадобиться использовать явный оператор attrib, если вам требуется определенное форматирование / длина и т. д.

0
ответ дан user667489 18 August 2018 в 17:25
поделиться
  • 1
    Не забудьте close() установить свои данные после того, как вы откроете его с помощью функции open(). – cmjohns 16 April 2011 в 16:53
  • 2
    Открытые и varnum не нужны здесь? Не могли бы вы просто сказать «данные try2; var4 = .; set try; & quot ;. В приведенном примере он будет делать open и varnum на каждой итерации, а не в неэффективности, поэтому их следует, по крайней мере, защищать с помощью «if _N_ = 1 then». – Tom Quarendon 19 April 2011 в 17:09
  • 3
    Мне нужно проверить, что var4 существует, так что если он сохраняет свой контент. Предложенный data try2; var4=.; set try; будет перезаписывать любые данные в ранее существовавшей переменной. – Murray 1 June 2011 в 06:23
  • 4
    Это создаст var4 как числовую переменную, если она не находится во входном наборе данных. – Tom 19 June 2018 в 16:39
  • 5
    Поскольку вы пытаетесь сделать это на одном и том же этапе, это действительно не лучше, чем другие ответы. Как только компилятор видит var4, он создает его в наборе данных. То, что происходит во время выполнения, не влияет. – Tom 19 June 2018 в 16:42
data try2;
    set try;
    var4 = coalesce(var4,.);
run;

(предполагается, что var4 является числовым)

6
ответ дан Uwe Keim 18 August 2018 в 17:25
поделиться
  • 1
    Это хорошо. С помощью этого вы можете назначить любое значение по умолчанию, которое вы хотите. Но для символьных переменных вам все равно нужно определить длину переменной перед ее использованием. Даже если вы сначала используете его в функции функции coalescec(), SAS будет по умолчанию создавать его как числовое. – Tom 19 June 2018 в 16:48
Другие вопросы по тегам:

Похожие вопросы: