标签: sas

使用SAS提取数值

我的原始数据在表格中

Var
12 A+
14 A+
AB+ 19
AB:20
20
25
27 New
Run Code Online (Sandbox Code Playgroud)

我想只提取它的数字部分.

任何人都可以帮我解决如何在sas中处理这些数据.

先感谢您.RGDS.

sas

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

SAS程序删除和数据集

我只是学习sas并看到两个有趣的程序.

  proc Delete data = table;  run;
Run Code Online (Sandbox Code Playgroud)

  proc datasets lib=Libr nolist;
        modify table;
           rename __first = second;
  quit;
  run;
Run Code Online (Sandbox Code Playgroud)

以及关于它们的几个问题:

  1. 为什么有些程序结束一样quitrun

  2. 为什么datasets使用quitrun在一起?(这是退出表的声明吗?)

  3. datasets-procedure用于小任务的最佳建议是什么?(当然不是,但是为了什么?或者不使用它?)

  4. 而且,哪种方法更快:proc deletesql-drop?(速度更快,需要的数据量更多)

sas dataset

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

这在数据步骤中意味着什么?

在这个数据步骤中,我不明白做if last.y什么......你能告诉我吗?

data stop2;
    set stop2;
    by x y z t;

if last.y; /*WHAT DOES THIS DO ??*/

    if t ne 999999 then
        t=t+1;
    else do;
            t=0;
        z=z+1;
    end;
run;
Run Code Online (Sandbox Code Playgroud)

sas datastep

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

以sas数据集 - 字母顺序重新排列变量

我有500列数据集,我想按字母顺序重新排列所有变量.除了在set语句之前使用retain语句之外,我该怎么做呢?

sas retain

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

如何将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万
查看次数

列出SAS LIBRARIES中的所有库名称

我想搜索一个名为"Loan"的sas数据集.

如果我知道特定的库我可以做到 proc datasets

proc datasets
    library = work
    memtype = data;
    contents
        data = _all_ (keep = libname memname name)
        out = work.table_name;
quit;
run;
Run Code Online (Sandbox Code Playgroud)

(之后我会选择那些包含"贷款"的memname使用index功能)

我想将行更改library = worklibrary = _all_ While文件以访问库信息.有没有其他方法可以完成任务?

sas

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

DB2/SQL相当于SAS的sum(of)函数

SAS有一个(col1-coln)函数的总和,它找到col1,col2,col3 ... coln中所有值的总和.(即,您不必列出所有列名称,只要它们连续编号).这是查找几个(适当命名的)变量之和的便捷捷径.

问题 - 是否存在与此类似的DB2/SQL?我有50列(它们被命名为col1,col2,col3 .... col50,我需要找到它们的总和.即:

    select sum(col1, col2, col3,....,col50) AggregateSum
    from foo.table
Run Code Online (Sandbox Code Playgroud)

sql db2 sas

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

在SAS中使用数字列名称

我试图将数字变量传递到此宏.我能够通过KEEP和SET语句传递它,但当它到达RENAME语句时,我得到这些错误:

错误:变量'2013'n不存档WORK.'2013'n.

错误:文件WORK.'2013'n上的DROP,KEEP或RENAME选项无效.

%macro step2(year,cwyear);
    TITLE; FOOTNOTE;
    DATA WORK._EG_CFMT;
        LENGTH label $ 9;
        SET WORK."&year."n (KEEP="&year."n "&cwyear."n RENAME=("&year."n =start "&year."n =label)) END=__last;
        RETAIN fmtname "cw&year."n type "C";

        end=start;

              RUN;
    %mend step2;
Run Code Online (Sandbox Code Playgroud)

当我改变双年份的双引号时.单引号,像这样:

SET WORK.'&year.'n (KEEP="&year."n "&cwyear."n RENAME=("&year."n =start "&year."n =label))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误:文件工作.'&YEAR.'n.DATA不存在.

当我改回所有双引号并删除n时,我收到以下错误:

错误22-322:语法错误,期望以下之一:名称,带引号的字符串,;,CUROBS,END,INDSNAME,KEY,KEYRESET,KEYS,NOBS,OPEN,POINT,DATA,LAST,NULL.

我该如何工作?

谢谢您的帮助!

string sas literals

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

SAS - "变量"与"不丢失(变量)"

在尝试使我的代码更具可读性时,我面临以下情况.

考虑一个数据步骤,您只想在其中选择具有值的观测值variable.使用WHERE语句似乎有两种方法:单独表达变量或使用MISSING函数.

例如,

案例1. VARIABLE

data where_var;
  set sashelp.electric;
  where AllPower;
run;
Run Code Online (Sandbox Code Playgroud)

案例2.不丢失的地方(VARIABLE)

data where_not_missing;
  set sashelp.electric;
  where not missing(AllPower);
run;
Run Code Online (Sandbox Code Playgroud)

这些产生了相同的结果.但是,我不确定是否一定如此.

  • 这些在功能上是否相同?
  • 案例1仅仅是案例2的语法糖吗?
  • 是否存在会产生不同结果的情况?

sas

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

是否有解决方案将此SAS代码写入“ proc sql”进程?

我在下面编写了此代码以完成2个任务:

  1. 如果满足“('01JUL2019'd-EXVISDAT + 1)<OverDueDays”的条件,则将变量“ miscrit”的值更改为null。
  2. 然后从表中删除目标日期和逾期的列。

我想知道是否有可能用“ proc sql”过程编写此过程,因为这些天我对sql过程真的很感兴趣。

谢谢大家的帮助!

data test4;
    set test3;
    if ('01JUL2019'd - EXVISDAT + 1) < OverDueDays then do;
    miscrit="";
    end;
    drop targetdays overduedays;
run;
Run Code Online (Sandbox Code Playgroud)

我设法使用proc sql来更改变量的值。但是不知道如何添加该表中的targetdays和overduedays列的删除代码。

proc sql;
    update test05
    set miscrit = ""
    where ('01JUL2019'd - EXVISDAT + 1) < OverDueDays
    ;
quit;
Run Code Online (Sandbox Code Playgroud)

sql sas

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

标签 统计

sas ×10

sql ×2

dataset ×1

datastep ×1

db2 ×1

literals ×1

proc-sql ×1

retain ×1

string ×1