我想将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数据集.任何人都可以帮助我.
谢谢!
我知道我可以用来%PUT在日志窗口中写一个文本字符串,但是如果我想在日志中写一个函数的结果PROBNORM(x)呢?有没有办法做到这一点?
这应该是一个简单的,但我无法弄清楚:有些情况我需要从表的内容创建一个宏变量,它们有时包含&符号(&)作为文本的一部分.当我调用宏变量时,如何让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写入日志?非常感谢!
我正在尝试创建包含值的数组。
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)
有人可以向我解释我做错了什么吗?
谢谢
我想使用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) 我在考试试卷上有一个问题,询问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如何得出答案二,因为我读过的所有理论说明都表明宏处理器应该做到以下几点
我试图看一个变量是否属于日期的边界.我讨厌MMDDYY10中的DATE1.
我使用以下代码
DATA GIANT;
SET GIANT;
UPPER_BOUND= intnx('week', DATE1, 2);
run;
Run Code Online (Sandbox Code Playgroud)
它让我回来了Num 8.
我想恢复它,MMDDYY10.以便我可以将它与我的其他日期进行比较.
两个问题:
我试着像这样转换它:
DATA GIANT;
SET GIANT;
UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.);
FORMAT UP_DOS MMDDYY10.;
run;
Run Code Online (Sandbox Code Playgroud)
但现在一切都是空的.
除了使用或选项生成的输出数据集之外,运行复杂的过程(例如PROC REG或)PROC GLM,通常会在输出窗口中生成描述回归结果的表.OUTOUTPUT
如何将这些表输出到SAS数据集?
例如,给定PROC REG中的第一个SAS示例(在文档页面上),如何输出拟合优度统计量(例如R-Squared)?
我在 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对此的任何帮助将不胜感激
我有一个包含一些注释的宏,因为我很擅长记录我的代码.出于某种原因,当我运行这个宏时,我得到一个悬挂的引用.为什么?
测试复制此宏的宏:
%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.