小编Joe*_*Joe的帖子

使用SAS将SAS数据导出到FTP

我想将SAS数据集从SAS导出到FTP.我可以使用以下命令导出csv文件(或txt文件):

%macro export_to_ftp(dsn= ,outfile_name= );

Filename MyFTP ftp "&outfile_name." 
HOST='ftp.site.com'
                 cd= "&DATA_STRM/QC" 
                  USER=&ftp_user.
                  PASS=&ftp_pass.;

PROC EXPORT DATA= &dsn. OUTFILE= MyFTP DBMS=%SCAN(&outfile_name.,2,.) REPLACE; 
RUN; filename MyFTP clear;
%mend;

%export_to_ftp(dsn=lib1.dataset ,outfile_name=dataset.csv);
Run Code Online (Sandbox Code Playgroud)

但无法使用它来导出SAS数据集.任何人都可以帮助我.

谢谢!

sas

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

写入SAS日志

我知道我可以用来%PUT在日志窗口中写一个文本字符串,但是如果我想在日志中写一个函数的结果PROBNORM(x)呢?有没有办法做到这一点?

sas

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

SAS:将&符号留在宏变量中

这应该是一个简单的,但我无法弄清楚:有些情况我需要从表的内容创建一个宏变量,它们有时包含&符号(&)作为文本的一部分.当我调用宏变量时,如何让SAS忽略&符号?例如,这段代码......

data _null_;
test="Amos&Andy";
call symputx("testvar",test);
run;
%put testvar=&testvar;
Run Code Online (Sandbox Code Playgroud)

...将此内容写入日志:

28   data _null_;
29   test="Amos&Andy";
WARNING: Apparent symbolic reference ANDY not resolved.
30   call symputx("testvar",test);
31   run;

NOTE: DATA statement used (Total process time):
  real time           0.00 seconds
  cpu time            0.00 seconds


WARNING: Apparent symbolic reference ANDY not resolved.
32   %put testvar=&testvar;
testvar=Amos&Andy
Run Code Online (Sandbox Code Playgroud)

如何让SAS忽略&符号而不将WARNING写入日志?非常感谢!

sas ampersand sas-macro

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

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 MD5散列

我想使用MD5对SAS数据集中的敏感信息(1个字段)进行哈希处理。但是在散列后,数据看起来很尴尬,即所有特殊字符。这是使用哈希函数的正确方法吗?

我的代码:

data md5; 
set sashelp.class (obs=2); 
md5 = md5(strip(name)); 
keep name md5; 
put _all_;
run; 
Run Code Online (Sandbox Code Playgroud)

我的输出:

Name=Alfred Sex=M Age=14 Height=69 Weight=112.5 md5=?p????\?rT]( _ERROR_=0 _N_=1
 Name=Alice Sex=F Age=13 Height=56.5 Weight=84 md5=dH???/?x{??!K8 _ERROR_=0 _N_=2
Run Code Online (Sandbox Code Playgroud)

hash md5 sas

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

SAS间接宏处理

我在考试试卷上有一个问题,询问SAS日志中的内容

%let test=one;
%let one=two;
%let two=three;
%let three=last;

%put what displays is &&&&&test;
Run Code Online (Sandbox Code Playgroud)

我很惊讶地发现,答案是: 2,因为我本来以为这将参考完全解析到最后.SAS也同意答案为两个.

任何人都可以解释一下SAS如何得出答案二,因为我读过的所有理论说明都表明宏处理器应该做到以下几点

  • scan1 &&&&& test - > &&&& test(即&&解析为&并告诉处理器继续从右向左扫描)
  • scan2 &&&& test - > &&& one
  • scan3 &&& one - > && two
  • scan4 && two - >&three
  • scan5&three - > last

sas sas-macro

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

SAS和INTNX格式化

我试图看一个变量是否属于日期的边界.我讨厌MMDDYY10中的DATE1.

我使用以下代码

DATA GIANT; 
  SET GIANT; 
  UPPER_BOUND= intnx('week', DATE1, 2);  
run;
Run Code Online (Sandbox Code Playgroud)

它让我回来了Num 8.

我想恢复它,MMDDYY10.以便我可以将它与我的其他日期进行比较.

两个问题:

  1. 如何将长度为8的NUMERIC转换为日期?
  2. 为什么intnx ...设计用于日期返回数字而不是相同格式的东西?

我试着像这样转换它:

DATA GIANT; 
  SET GIANT; 
  UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.);
  FORMAT UP_DOS MMDDYY10.; 
run;
Run Code Online (Sandbox Code Playgroud)

但现在一切都是空的.

date sas

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

如何查看proc中可用的输出选项?

除了使用或选项生成的输出数据集之外,运行复杂的过程(例如PROC REG或)PROC GLM,通常会在输出窗口中生成描述回归结果的表.OUTOUTPUT

如何将这些表输出到SAS数据集?

例如,给定PROC REG中的第一个SAS示例(在文档页面上),如何输出拟合优度统计量(例如R-Squared)?

sas

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

SAS:在where子句中将日期时间转换为日期

我在 sas 数据集中有一个日期时间 25.6 格式的列;我们将此列称为日期时间。我想在 where 子句中将其转换为 Date9 格式,并检查某个日期或日期变量。

我目前有以下代码:

proc sql;
Select rowid, name, dob, country
from db.testTable
where cast(datetime as date9.) eq '14sep2014'd
;
quit;
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时出现错误:

错误 22-322:语法错误,需要以下之一:!、!!、&、)、*、**、+、'、'、-、/、<、<=、<>、=、>、 >=、?、AND、BETWEEN、包含、EQ、EQT、GE、GET、GT、GTT、IN、IS、LE、LET、LIKE、LT、LTT、NE、NET、NOT、NOTIN、OR、^、^ =、|、||、~、~=。

错误 202-322:选项或参数无法识别,将被忽略。

如果使用以下命令,我会收到相同的错误消息

proc sql;
Select rowid, name, dob, country
from db.testTable
where cast(datetime as date9.) = '14sep2014'd
;
quit;
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法在 SAS 中将a 转换datetime为格式?date9对此的任何帮助将不胜感激

sas

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

为什么我的宏中出现不平衡的报价?

我有一个包含一些注释的宏,因为我很擅长记录我的代码.出于某种原因,当我运行这个宏时,我得到一个悬挂的引用.为什么?

测试复制此宏的宏:

%macro testme;
* Comment that is in my macro that doesn't work;
proc freq data=sashelp.class;
run;

%mend testme;

%testme;
Run Code Online (Sandbox Code Playgroud)

在第一次执行时,它完全失败,在第二次执行时它给了我消息 ERROR: No matching %MACRO statement for this %MEND statement.

sas sas-macro

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

标签 统计

sas ×10

sas-macro ×4

ampersand ×1

date ×1

hash ×1

md5 ×1

proc-sql ×1