标签: proc-sql

SAS 阵列创建

我正在尝试创建包含值的数组。

proc sql noprint;
select count(*) into :dscnt from study;
select libname into :libname1 - :libname&dscnt from study;
quit;
Run Code Online (Sandbox Code Playgroud)

我认为语法是正确的,但我在 SAS Studio 中不断收到以下错误消息。

***NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
NOTE: Line generated by the macro variable "DSCNT".
79         libname       4
                      _
                      22
                      200
ERROR 22-322: Syntax error, expecting one of the following: ',', FROM, NOTRIM.  

ERROR 200-322: The symbol is not recognized and will be ignored.***
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释我做错了什么吗?

谢谢

sas proc-sql sas-macro

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

SAS proc导入缺少前导零

我试图通过proc import(SAS)将数字从csv文件导入sas数据集,但导入后我的所有前导零都消失了.

例如,

'0123456'导入后我只会得到'123456'

import sas proc-sql leading-zero

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

如何将SAS中的日期转换为YYYYMMDD数字格式

在test_1表中,该my_date字段是"DATE9".格式.
我想将它转换为纯数字格式(数字长度8),这是格式YYYYMMDD.
我还想在proc sql语句中理想地执行此操作.

这是我到目前为止所拥有的.
显然,我需要一些东西来操纵my_date字段.

rsubmit;
proc sql;
    CREATE TABLE test_2 AS      
    SELECT
        my_date
    FROM
        test_1
    ;
quit;    
endrsubmit;
Run Code Online (Sandbox Code Playgroud)

仅供参考:我发现很难理解SAS中的各种方法.

为了澄清,该字段实际上应该是数字,而不是字符字段,也不是日期.

sas proc-sql

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

Proc SQL输出未显示

我使用Proc SQL的知识应该允许您绕过PRINT过程并自动打印输出,但由于某种原因输出没有显示.我的输出目标处于活动状态,我的日志没有错误.这是我的代码.

proc sql;
    create table merged as
    select *
    from gram as g, nos as n
    where g.cash = n.weight;
quit;
Run Code Online (Sandbox Code Playgroud)

日志只是说过程时间和行/变量计数.没有错误.但它没有出现在输出窗口中.我不确定是什么问题.

sas proc-sql

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

SAS Proc SQL如何仅对大表的N行执行过程

我需要对一个非常大的表的一小部分(例如 100 行)执行一个过程,只是为了测试语法和输出。我已经运行以下代码一段时间并且它仍在运行。我想知道它是否在做其他事情。或者说正确的做法是什么?

Proc sql  inobs = 100;
select 
   Var1, 
   sum(Var2) as VarSum
from BigTable
Group by
   Var1;
Quit;
Run Code Online (Sandbox Code Playgroud)

sas proc-sql

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

向SAS变量添加标签

我在SAS中有一个名为"Flight"的数据集,我想标记一个特定列"Carrier"的所有行,其值与来自另一个名为"Airlines"的数据集匹配 ("Flght_carrier_code").

请提出一些方法.

样本数据集1 - "飞行"

date      carrier   flight  tailnum air_time
01-01-2013  UA      1714    N24211  227
01-01-2013  AA      1141    N619AA  160
01-01-2013  B6       725    N804JB  183
01-01-2013  DL      461     N668DN  116
01-01-2013  UA      1696    N39463  150
01-01-2013  B6      507     N516JB  158
01-01-2013  EV      5708    N829AS  53
01-01-2013  B6      79      N593JB  140
01-01-2013  AA      301     N3ALAA  138
01-01-2013  B6      49      N793JB  149
01-01-2013  B6      71      N657JB  158
Run Code Online (Sandbox Code Playgroud)

样本数据集2 - "航空公司"

Flght_carrier_Code  name
9E              Endeavor …
Run Code Online (Sandbox Code Playgroud)

sas proc-sql

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

使用PROC SQL在SAS中进行LEFT JOIN

我是SAS新手,有这个基本问题.我在表A中列出了纽约证券交易所的交易日期如下 -

trading_date
1st March 2012
2nd March 2012
3rd March 2012
4th March 2012
5th March 2012
6th March 2012
Run Code Online (Sandbox Code Playgroud)

我有另一张表B,其股价信息为 -

Date          ID    Ret Price
1st March 2012  1   …   …
3rd March 2012  1   …   …
4th March 2012  1   …   …
5th March 2012  1   …   …
6th March 2012  1   …   …
1st March 2012  2   …   …
3rd March 2012  2   …   …
4th March 2012  2   …   …
Run Code Online (Sandbox Code Playgroud)

...具有与价格和退货相关的数字数据.

现在我需要将NYSE Data表加入上表以获得下表 -

Date …
Run Code Online (Sandbox Code Playgroud)

join sas left-join proc-sql

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

具有不同列的联合表

我有两个大表(每个约1GB),有许多不同的列,我想在sas中执行union.

目前,我使用proc sql和union all的以下方法.

SELECT A, B, '' as C from Table_1 UNION ALL SELECT '' as A, B, C from Table_2

但是,这不是优选的,因为我在两个表中都有几十行,而且我不断添加它们.因此,我正在寻找一种方法来自动创建空白列,而无需明确地写出来.

我也尝试了以下查询:
select * from (select * from Table_1), (select * from Table_2)

然而,这看起来非常耗费计算并且需要永远运行.

有没有更好的方法来做到这一点?我也愿意使用data set而不是proc sql;

sas proc-sql

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

需要catx宏函数 - 在proc sql中catx限制为200个字符

它可以是一个虚拟的问题,但我找不到例子.案例如下:

proc sql;
   create table set1 as select catx('<', field1, field2 ....) as need_field
   from table;
quit;
Run Code Online (Sandbox Code Playgroud)

有了这个代码字段,need_field会减少200的长度,所以它的可预测性如文档所示:

CATX函数向变量返回值,或在临时缓冲区中返回值.从CATX函数返回的值具有以下长度:

•WHERE子句和PROC SQL中最多200个字符

•除WHERE子句外,DATA步骤中最多32767个字符

•从宏处理器调用CATX时最多65534个字符

我不想使用数据步骤.你能帮我用宏处理器构建代码吗?(第三种方式).谢谢!

sas proc-sql sas-macro

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

循环遍历表并在SAS中加入它们

我无法解决一个问题.

我在一个SAS库中有未知数量的表.我想创建一个循环,通过它们和"UNION ALL"这些表.

表是预先检查的,它们具有相同的结构.这些表包括历史数据,因此它应该是Union all.我尝试了以下脚本,但它会搜索所有可能性,但不会执行UNION ALL.

我很感激任何想法来解决这个问题.

%macro union_tables(table_name, last_extract); 
 %do i=1 %to &last_extract.;
        select * from data.&table_name&i
        union all
 %end;
        select * from data.&table_name&i
%mend;

proc sql; 
create table Full_history as 
%union_tables(Table_,1216);
quit;
Run Code Online (Sandbox Code Playgroud)

先感谢您.

union loops sas proc-sql

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

标签 统计

proc-sql ×10

sas ×10

sas-macro ×2

import ×1

join ×1

leading-zero ×1

left-join ×1

loops ×1

union ×1