小编Joe*_*Joe的帖子

SAS:从另一个宏调用一个宏...宏定义的顺序

在我的代码中,我有几个宏.宏A是主宏.宏A然后调用宏B,宏B又调用宏C.

在SAS中,我是否必须按向后顺序定义它们?换句话说,我必须首先定义宏C,然后定义宏B,然后定义宏A吗?或者它是否重要,因为SAS在实际命中运行宏之前读取所有代码?就此而言,我可以发出命令来运行宏作为我的代码中的第一个语句,然后在命令下面定义宏吗?

谢谢!

sas sas-macro

6
推荐指数
1
解决办法
3万
查看次数

SAS宏变量变化

一般来说,我们如何处理需要在宏内部修改宏变量的情况; 例如,假设我有这个宏:

%macro test (arg=); 
array arrayone [&arg];   /* This is ok */
array arraytwo [&arg+1] /* This is not ok. How to make it work? */ 
... 
Run Code Online (Sandbox Code Playgroud)

当我想要%test(3)然后arraytwo需要采用维度4时,我们如何管理这些情况?

sas sas-macro

6
推荐指数
1
解决办法
1083
查看次数

R等价于.first或.last sas运算符

有人知道什么是SAS的最佳R替代品.或者持续.运营商?我没找到.

SAS拥有第一名.最后.自动变量,用于识别具有特定变量的相同值的组中的第一个和最后一个记录; 所以在以下数据集中定义了FIRST.model和LAST.model:

Model,SaleID,First.Model,Last.Model
Explorer,1,1,0
Explorer,2,0,0
Explorer,3,0,0
Explorer,4,0,1
Civic,5,1,0
Civic,6,0,0
Civic,7,0,1
Run Code Online (Sandbox Code Playgroud)

r sas

6
推荐指数
1
解决办法
9687
查看次数

为什么直接运行时使用CALL EXECUTE运行宏错误?

我最近继承了一个看起来像这样的SAS程序:

%MACRO ComplicatedStuff( GroupId= );

    %LET FileId = %SYSFUNC( OPEN( Work.BigDataSet ) );

    %PUT    'Doing something really difficult with ' &GroupId.;

    %LET CloseRC = %SYSFUNC( CLOSE( &FileId. ) );

%MEND ComplicatedStuff;

%ComplicatedStuff(GroupId=ABC1);
%ComplicatedStuff(GroupId=DEF2);
%ComplicatedStuff(GroupId=3GHI);
%ComplicatedStuff(GroupId=J4KI);
Run Code Online (Sandbox Code Playgroud)

作为一个多方面的程序员,我看着这个并且想"我肯定能让这个变得更有活力".果然,我能够使用以下方法开发我认为简单的解决方案CALL EXECUTE:

DATA Work.IDs;

    INPUT   ID      $4.
            ;

DATALINES;
ABC1
DEF2
3GHI
J4KI
RUN;

DATA Work.CommandDebug;
    SET Work.IDs;

    Command = CATS(
                '%ComplicatedStuff(GroupId=', ID, ');'
              );

    CALL EXECUTE( Command );

RUN;
Run Code Online (Sandbox Code Playgroud)

我很满意这个解决方案,直到将ComplicatedStuff生成的文件FTP到另一台服务器.我们的SAS服务器在Unix上运行,SAS管理员为我们创建了一个有用的小宏来调用named %sas_sftp(因为,我被告知,x代码变得非常难看).不幸的是,我无法发布%sas_sftp代码 - 它属于我的公司,我不认为他们想要它.

我尝试像调用%sas_sftp宏一样调用%ComplicatedStuff …

sas

5
推荐指数
1
解决办法
816
查看次数

如何读入R中的大型sas7bdat数据集?

我有一个60gb的sas7bdat文件我试图在R中进行子集.有没有人知道这样做的方法?

我有SAS,它需要大约14分钟才能完成,但是我想在R中做到这一点.

谢谢

r

5
推荐指数
1
解决办法
4444
查看次数

在SAS ODS pdf文件中包含语法

当使用SAS将ODS转换为PDF时,是否可以包括提交的语法甚至输出日志文件?

例如,给出这个简单的代码:

ods pdf file = "c:\temp\myPDF.pdf";
proc reg data = mydata;
model y = x;
run;
ods pdf close;
Run Code Online (Sandbox Code Playgroud)

我可以得到回归输出和附图.但是有可能像这样将所附的命令合并到PDF中吗?

proc reg data = mydata;
model y = x;
run;
Run Code Online (Sandbox Code Playgroud)

sas sas-ods

5
推荐指数
1
解决办法
459
查看次数

在SAS中,执行没有分号的宏?

我在SAS中多次运行宏,如下所示:

%mymac(a,b);
%mymac(a,c);
.
%mymac(a,a)
%mymac(a,w);
.
Run Code Online (Sandbox Code Playgroud)

我的程序/宏类似于:

/* begin program here */

data original_data;
set mylib.mydata;
run;

%macro mymac(x,y);

data mydata1;
set original_data;
where school_district="&x";
run;

proc means data=mydata1;
var income;
run;

%mend mymac;
Run Code Online (Sandbox Code Playgroud)

我意识到我忘记了一个分号(如(a,a)中所示)并且SAS似乎并不介意.它运行所有的宏调用没有问题.当我添加分号时,我比较了输出,我看不出有什么区别.

这是正常的,SAS没有丢失分号的错误吗?

sas sas-macro

5
推荐指数
2
解决办法
1414
查看次数

在SAS中生成阵列的所有唯一排列

在SAS中,如果我有一个字符串或数组,如下所示,

array x[4] $1 ('A' 'B' 'C' 'D');
Run Code Online (Sandbox Code Playgroud)

我需要生成元素的所有"唯一"排列,如下所示,

[ABCD]
[ABC]
[BCD]
[ACD]
[ABD]
[AB]
[AC]
[AD]
[BC]
[BD]
[CD]
[A]
[B]
[C]
[D]
Run Code Online (Sandbox Code Playgroud)

SAS中是否有一个函数用于生成阵列的所有可能组合?

arrays sas

5
推荐指数
1
解决办法
2173
查看次数

什么是R等同于SAS Enterprise Miner Score Node?

SAS Enterprise Miner具有称为"分数代码节点"的东西.此节点将所有先前的代码(即创建新变量,输入缺失值,运行模型等)应用于完全未触及的数据集.除了使用保持样本(即测试数据)之外,我如何在R中执行此操作?

scoring r

5
推荐指数
1
解决办法
611
查看次数

在 SAS Guide 中注释所选代码的快捷方式

是否有一些快捷方式可以在 SAS Enterprise Guide 中注释所选代码?

有 Ctrl + / 注释所选行。但是仅对代码的选定部分进行注释会非常有用。

谢谢。

sas enterprise-guide

5
推荐指数
1
解决办法
5888
查看次数

标签 统计

sas ×8

r ×3

sas-macro ×3

arrays ×1

enterprise-guide ×1

sas-ods ×1

scoring ×1