小编Joe*_*Joe的帖子

SAS - 一个Excel工作表上的多个Proc报告

是否可以使用proc报告在一个excel工作表上堆叠多个表?例如,下面是我的代码的简化版本,我想使用第一个proc报告显示table1,然后跳过一行并在同一工作表的正下方显示table2.

ods listing close;
ods results off;
ods tagsets.excelxp file="c:\temp\char.xls" style=esgexcel ;

proc report data=table1 missing nowindows spacing=1;
column  field1
        field2
        field3 
        ;

define field1 /   'acct';
define field2 / format=mmddyy10.  'date';
define field3 / format=dollar22.2 'value';

run;

proc report data=table2 missing nowindows spacing=1;
column  field1
        field2
        field3 
        ;

define field1 /   'acct';
define field2 / format=mmddyy10.  'date';
define field3 / format=dollar22.2 'value';

run;

ods tagsets.excelxp close;
ods listing;
ods results;
Run Code Online (Sandbox Code Playgroud)

它不起作用.它将两个proc报告放在单独的工作表上.

sas proc-report sas-ods

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

如何使用自定义扩展名(.sas)保存TextEdit(mac)文件?

所以,我正在为SAS编写一些代码,我意识到我必须将文件保存为filename.sas.我的教授提到我必须在我的电脑上使用记事本或其他文本编辑器.

如何在Mac上使用TextEdit来保存.sas文件?打开TextEdit,添加一些文本和保存会导致文件添加.rtf或.odt扩展名.

应该添加我的mac版本是10.5.8

sas textedit

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

如何在导入SAS时解决上诉符号引用

我正在尝试导入一个.csv文件,但在路径中的bp&d中有(&)特殊字符,它显示错误为警告:未解析表观符号引用D. 我该怎么做.

proc import datafile ="\ pa-storage\bp&d\fot\PRODUCTS\Daa-SQN\ATA\Pss10_ALL_IN_ALL.csv"out = test dbms = csv replace; getnames =是; 跑;

sas

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

创建会话运行期间生成的输入和输出数据文件列表 - SAS

我的情况 我希望一切顺利.我目前正在进行一项研究项目,处理大量不同库下的数据集.我创建了多个%宏定义,这些定义又生成了许多输出表并使用了许多输入表.这些表保存在不同的库下.

我的问题: 创建这些数据文件时,我的计算机速度变慢.清除每个宏程序会话中不需要的表会增加计算响应.

我的QUERY: 有没有办法生成每个宏程序使用PROC SQL或DATA步骤创建的输入和输出表列表?每个MACRO PROGRAM都有多个%宏,再次出于代码可读性的目的.使用"IN"或"OUT"语句对数据文件进行前缀/后缀无济于事.这将有助于我进行数据管理.

sas

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

SAS proc sql里面的%宏

首先我有下表:

data dataset;
    input id $ value;
    datalines;
    A 1
    A 2
    A 3
    A 4
    B 2
    B 3
    B 4
    B 5
    C 2
    C 4
    C 6
    C 8
    ;
run;
Run Code Online (Sandbox Code Playgroud)

我想编写一个宏,以便用户可以通过给出id值来对数据进行子集化.我在宏内部执行sql,如下所示:

%macro sqlgrp(id=,);

proc sql;
        create table output_&id. as
        select *
        from dataset
        where id = '&id.'
        ;
    quit;
%mend;

%sqlgrp(id=A); /*select id=A only*/
Run Code Online (Sandbox Code Playgroud)

我能够在WORK库中生成output_A表,但是它有零(0)个观察值.

为什么这不起作用?

sql sas sas-macro

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

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中的date9格式

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

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

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

sas

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

标签 统计

sas ×10

sas-macro ×3

batch-processing ×1

proc-report ×1

sas-ods ×1

sql ×1

textedit ×1