我正在把一个SAS代码程序转换成一个python等价物。我正在纠结的一个部分是当宏中使用的变量用于创建数据集时,如何在SAS中转换宏程序。例如:
%macro program(type);
data portfolio_&type.;
set portfolio;
run;
我基本上想创建一个等价于portfolio_&type的 Dataframe 。你知道我该怎么做吗?
编辑:我觉得我本来就不够详细
假设我的数据有一个名为type的列,它的值为'tree'或'bush',我想把我的数据一分为二,然后在两者上处理相同的函数,并为两者创建单独的输出表。在SAS中,这是相当简单的。我编写宏,它是有效的函数,接受我的参数并将它们放入代码中,使它们成为唯一的数据集。
%macro program(type);
data portfolio_&type.;
set portfolio (where=(type=&type.));
run;
Proc freq data=Portfolio_&type.;
Tables var1/out=summary_&type.;
Run;
%mend;
%program(Tree);
%program(bush);
使用&可以将文本拖放到数据集名称中,但在python中使用def函数类型语句无法执行此操作,因为无法将参数拖放到数据框名称中
1条答案
按热度按时间iovurdzv1#
您的SAS宏希望动态命名输入PROC Freq的SAS数据集。Pandas Dataframe 不能动态命名。您需要使用解析的宏变量值Portfolio_Tree和Portfolio_bush作为 Dataframe 名称。SAS数据集名称不区分大小写,Pandas Dataframe 区分大小写。
对于PROC FREQ,您将拥有Portfolio_Tree['var1'].value_counts