SAS Equivalent of Macro variable in Python - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: SAS Equivalent of Macro variable in Python (/thread-15622.html) |
SAS Equivalent of Macro variable in Python - AI_ML_Neophyte - Jan-24-2019 I am writing code to simulate different scenarios. However, it gets cumbersome to type in the values for different scenarios. I was hoping I could use something similar to a SAS Macro variable so that I can change the values at the top and the bottom would invoke (via the macro variable) the changes I've tried various options but no luck /* Defining the Macro Variable */ %LET a = 10; %LET b = 5; /* Invoking it */ x = &a + &b The answer is 15 thanks PC RE: SAS Equivalent of Macro variable in Python - stullis - Jan-24-2019 I must be missing something here. Why do variables not work for your project? a = 10 b = 5 x = a + b print(x) RE: SAS Equivalent of Macro variable in Python - ichabod801 - Jan-24-2019 You don't need macro variables in Python. Python is much more flexible than SAS. a = 10 b = 5 x = a + b print(x) # prints 15If you want to run the same code for different scenarios, you should put that code into a function or a class, and use parameters: def add(a, b): return a + b x = add(5, 10) print(x) # prints 15 RE: SAS Equivalent of Macro variable in Python - AI_ML_Neophyte - Jan-25-2019 thank you ichabod801. Very helpful. PC RE: SAS Equivalent of Macro variable in Python - FelixS - Mar-29-2019 SAS macro is much more flexible that the construction mentioned above in Python. SAS macro variable is taken any text. Like %let a=this is a text; contents of a is string between '=' and ';' Then it is converted into code after processing part of multi-line code text, containing referencing &a. in Python so far I have found the way only to use variables defined in Python in expressions used for data frames with referencing @var_name. For example, very easy task to filter some data frame on columns of type object which works in code like this adsl[(adsl['sex']==b'1') & (adsl['area']==b'2') ] If I need to specify the values for selection somewhere before this code, there is no way to do this. While the following code is working well age_min=25 age_max=64 year_min=1972 year_max=2002 adsl1.query( "(@age_min<=age<=@age_max) & (@year_min<=year<=@year_max)") |