我正在运行以下代码来输出某个变量的直方图:
ods results off;
ods listing close;
ods pdf file="&folder/temp.pdf";
title ;
* Histogram of betCount;
proc univariate data=want;
var BetCount;
histogram;
*label sex=' ' height='Height (cm)';
run;
ods pdf close;
ods listing;
ods results on;
Run Code Online (Sandbox Code Playgroud)
它确实会创建 PDF,但有很多额外的表格和输出。我只想看直方图,因为我被读入乳胶作为 \minipage 的一部分,其中有六个数字。我之前已经手动完成此操作,方法是截取所需区域的屏幕截图,粘贴到 Paint 中并转换为 PDF 或 PNG:我不想再走这条路了!对于 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如何得出答案二,因为我读过的所有理论说明都表明宏处理器应该做到以下几点
我正在尝试使用数组来完成以下任务。但是,我以前从未使用过,并且遇到了一些麻烦。
基本上,我想获取以下数据并为每个acct,seq1,seq2组合创建一行(观察):
acct seq1 seq2 la ln
9999 1 10 20.01 100
9999 1 10 19.05 1
9999 2 11 26.77 100
9999 2 11 24.86 1
8888 3 20 38.43 218
8888 3 20 37.53 1
Run Code Online (Sandbox Code Playgroud)
这就是我要结束的。注意,为了节省空间,我仅显示la1到la3和ln1到ln3。实际上将转到la7和ln7:
acct seq1 seq2 la1 la2 la3 ln1 ln2 ln3
9999 1 10 20.01 19.05 . 100 1 .
9999 2 11 26.77 24.86 . 100 1 .
8888 3 20 38.43 37.53 . 218 1 .
Run Code Online (Sandbox Code Playgroud)
这是到目前为止我尝试过的代码。任何帮助将不胜感激:
data want;
set have;
by …Run Code Online (Sandbox Code Playgroud) 我想创建包含大量滞后的给定变量的滞后值的变量.我怎么能这样做?我尝试以下方法:
data out;
set in;
do i = 1 to 50;
%let j = i;
lag_&j = Lag&j.(x);
end;
run;
Run Code Online (Sandbox Code Playgroud)
如何将循环变量i放入宏变量j或如何直接使用它来创建适当命名的变量和Lag函数?
我试图看一个变量是否属于日期的边界.我讨厌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)
但现在一切都是空的.
我试图弄清楚如何读取由逗号分隔的文本文件(300mb)中的数据,但数据在一行中.
数据如下所示:
A,B,C,d,E,F,G,H,I,J,K,L,M,FALSE,FALSE,真实,1,379,0,1,1,1,1,1,1,0 ,1,0,6,0,6,0,6,6,6,6,6,6,6,6,6,0,6,0,0,0,0,0,0,0
这里A到M的数据是变量名,rest是这些变量的数据.谁能帮我把这些数据读进SAS?
非常感谢!
与这里类似,我可以计算缺失观察的数量:
data dataset;
input a b c;
cards;
1 2 3
0 1 0
0 0 0
7 6 .
. 3 0
0 0 .
;
run;
proc means data=dataset NMISS N;
run;
Run Code Online (Sandbox Code Playgroud)
但我怎样才能计算观察值的数量呢0?
我在 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对此的任何帮助将不胜感激
以下示例非常简单,可以更容易地解决.但是,我有兴趣让它发挥作用.以下示例基于sashelp-library的cars-dataset.首先,我有一个名为fun的宏:
proc contents data = sashelp.cars out = mycontents;
run;
%macro fun(var);
proc sql noprint;
select count(distinct(&var.))
into :obs
from sashelp.cars;
quit;
%mend;
Run Code Online (Sandbox Code Playgroud)
现在我想调用宏但只是更新obs(来自输入语句).我用:
data work.test;
set mycontents;
if name ne "Type" then do;
call execute('%nrstr(%fun('||name||');');
new = &obs;
end;
else new = 5;
Run Code Online (Sandbox Code Playgroud)
跑;
简而言之,这应该迭代mycontents的行.然后根据名称调用一个(多个)宏,更新obs.然后我可以简单地用obs填充新列new.但是,obs对所有名称保持相同的值,这是最后一个变量的值.
我正在尝试从 ftp 服务器将一些文件下载到我的本地。我已成功使用以下方法从服务器移动 .txt 和 .csv 文件,而不是我需要的 .sas7bdat 文件。
protocol <- "sftp"
server <- "ServerName"
userpwd <- "User:Pass"
tsfrFilename <- "/filepath/file.sas7bdat"
ouptFilename <- "out.sas7bdat"
# Run #
## Download Data
url <- paste0(protocol, "://", server, tsfrFilename)
data <- getURL(url = url, userpwd=userpwd)
## Create File
fconn <- file(ouptFilename)
writeLines(data, fconn)
close(fconn)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行 getURL 命令时,遇到以下错误:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string:
Run Code Online (Sandbox Code Playgroud)
有谁知道我可以从 ftp-server 将 sas7bdat 文件下载到本地的任何替代方法,或者是否有办法更改下面的代码以成功下载文件。谢谢!