小编Joe*_*Joe的帖子

SAS:如何忽略错误?

我的SAS代码包含多个data步骤,并且proc sql- >彼此无关.其中一些可能会抛出错误.发生这种情况时,其余代码将终止.

我需要我的代码继续执行.即使抛出错误,只需将其放入日志中,ERROR : ... 但仍然继续执行.我怎样才能做到这一点 ?

从这里尝试了一些选项

options noerrorabend;

但我找不到任何有用的东西

sas batch-processing

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

在MACRO中跳过2

我想跳过以下宏中的两个数据集:

%macro bulk_ODI_extract(low_id,high_id);
    %do loop_match=&low_id %to &high_id; 
        %ODI_commentary(&loop_match,2);
    %end;
%mend bulk_ODI_extract;

%bulk_ODI_extract(749781,749787);
Run Code Online (Sandbox Code Playgroud)

因此,最终数据集应包括749781,749783,749785和749787,同时跳过749782,749784和749786.

sas sas-macro

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

计算分组行之间的最大差异

我有以下数据,其中家庭中的人按年龄排序(从最老到最年轻):

data houses;             
input HouseID PersonID Age;       
datalines;              
1 1 25                    
1 2 20                   
2 1 32
2 2 16
2 3 14
2 4 12
3 1 44
3 2 42
3 3 10
3 4 5
;
run;
Run Code Online (Sandbox Code Playgroud)

我想为每个家庭计算连续老年人之间的最大年龄差异.因此,该示例将连续为家庭1,2和3给出5(= 25-20),16(= 32-16)和32(= 42-10)的值.

我可以使用大量合并(即提取人1,与人2的提取物合并,等等)来做到这一点,但由于家庭中可能有多达20多人,我正在寻找更直接的方法.

sas

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

SAS在字符的条件比较中使用全局变量

我有一个if语句,检查全局变量是否为是/否

全局变量是前一个宏的输出

为什么当我在"Y"或"N"周围使用引号时它不起作用 - 我从未在任何其他编程语言中看到过这种情况.我总是不得不为字符变量使用引号

即这不起作用

%if &errorflag='Y' %then %do;
Run Code Online (Sandbox Code Playgroud)

但这有效:

%if &errorflag=Y %then %do;
Run Code Online (Sandbox Code Playgroud)

sas sas-macro

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

如何在SAS中声明全局数组变量?

我是SAS的新手并且在转动轮子.SAS文档和其他Google搜索没有帮助我解决这个问题.如何声明一个全局数组变量,我可以在各种过程中使用它来遍历内容?

这是我尝试过的:

%let fileArray = array{*} $32 file1-file4  ('ce_abcdef_filedetail1' 'ce_abcdef_filedetail2' 'ce_abcdef_filedetail3' 'ce_abcdef_filedetail4' );

/* Loop through each file and run the macro*/
do i = 1 to dim(fileArray);
     %analyze_file(FILENAME=&fileArray[i], PATH=&path, OUTPUT=&output)
end;
Run Code Online (Sandbox Code Playgroud)

我需要它来传递我在全局数组中指定的文件名.谢谢你的帮助!

arrays global-variables sas sas-macro

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

多级宏变量解析

我在存储中有电子邮件列表,我将其包含在内,以便特定国家的人员收到通知.但出于演示目的,请使用一个:

我想根据变量和系统动态选择地址:

%let SEList1 = "my.email@domain.eu";

%put system.list1.;
/*system.list1, which is ok*/
%put &system.list1.;
/*SElist1, which is ok*/
%put &&system.list1.;
/*SElist1, Hmm? Shouldn't this be "my.email@domain.eu"*/


%put &&&system.list1.;
/*"my.email@domain.eu", umm... ok? */
/*Lets keep going.... */

%put &&&&system.list1.;
/*SElist1. wut?  */
%put &&&&&system.list1.;
/*"my.email@domain.eu"*/
%put &&&&&&system.list1.;
/*"my.email@domain.eu"*/
%put &&&&&&&system.list1.;
/*&"my.email@domain.eu"*/
%put &&&&&&&&system.list1.;
/*SElist1. You got to be kidding me?*/
Run Code Online (Sandbox Code Playgroud)

题:

a)为什么&&不能解决,但&&&会解决?

b)地球上发生了什么&*4 +的水平

sas sas-macro

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

SAS - 将宏传递给宏

有没有办法将宏作为参数传递给宏?

就像是

%macro outer_macro(macro);
  %do i=1 %to 5;
     &macro
  %end;
%mend outer_macro;

%macro inner_macro;
  /* do something usefull */
%mend inner_macro;

%outer_macro(%inner_macro)
Run Code Online (Sandbox Code Playgroud)

当然,这个例子不起作用.

sas sas-macro

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

如何从字符串中删除时间并转换为sas中的date9格式

想要转换date = 2021/06/05 00:00:00date = 05Jun2021. 我用这段代码来转换:

New date = datepart(date);
Run Code Online (Sandbox Code Playgroud)

但这没有用。我还使用子字符串来删除时间,但似乎这个方法有点冗长。

sas

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

SAS如何计算一个变量,该变量是每个观测值的所有其他观测值的平均值?

例如,数据集a是

id   x
1    15
2    25
3    35
4    45
Run Code Online (Sandbox Code Playgroud)

我想在数据集a中添加一列y,y是不包括当前id的x的平均值.所以y_1 =(x_2 + x_3 + x_4)/ 3 =(25 + 35 + 45)/ 3.

sql sas

0
推荐指数
1
解决办法
73
查看次数

SAS宏输出文件命名约定

我有一个sas宏,它依赖于两个不同的变量,分别用AgeYear表示.&Age&Year

我想为15-18岁和2007-2010年的每个组合运行宏,并希望为这些组合中的每一个创建一个输出表(即总共16个表).

这是我的问题,我尝试在Matrix_pop_adm&Age_RP&YearSAS不喜欢的宏中给输出表以下名称.

如何正确命名输出文件?

filenames sas sas-macro

0
推荐指数
1
解决办法
127
查看次数