SAS显示管理器是SAS系统的comamnd线路接口,作为传统设施保留在Base SAS中.
然而,关于如何使用此工具的在线文档充其量是稀疏的,并且谷歌搜索不是很有成效.
常见的DM命令是:CLEAR LOG; 清晰的输出; WPGM;
我的问题是 - 那里还有其他什么DM命令?
是否有任何语句\函数能够获取变量的名称?最好将它们放入另一个数据集,文本字段或宏变量的列中.
例如
- 数据集1
Name age sex
Jk 14 F
FH 34 M
Run Code Online (Sandbox Code Playgroud)
预期的数据集
Var_name_of_dataset1
Name
age
sex
Run Code Online (Sandbox Code Playgroud)PS:我知道一个声明:select into,它确实相关它可以将列的值读入带有自定义separetors的字段中,因此希望有类似的方法将列名读入字段或列.
谢谢
首先是一些背景.我在SAS中使用proc sql,需要获取数据集中的所有条目(包含几百万个条目),其变量"Name"等于(比方说)"Massachusetts".当然,由于数据曾经由人类手动输入,因此接近所有可能出现的拼写错误("Amssachusetts","Kassachusetts"等).
我发现很少有条目错误地超过两个字符,所以代码
Name like "__ssachusetts" OR Name like "_a_sachusetts" OR ... OR Name like "Massachuset__"
Run Code Online (Sandbox Code Playgroud)
会选择我要找的条目.但是,我希望必须有一种更方便的方式来编写
Name that differs by at most 2 characters from "Massachusetts";
Run Code Online (Sandbox Code Playgroud)
在那儿?或者是否有其他策略来获取这些条目?我尝试搜索stackoverflow和网络但是不成功.我也是SQL和SAS的初学者.
一些额外的信息:数据库不是英文(实际的字符串不是"马萨诸塞州")所以使用SOUNDEX并不是真的可行(如果有的话).
提前致谢.
(编辑:改进标题)
我有一个快速的问题.
我正在学习SAS,并且遇到了这个dsd=选择.
有谁知道这代表什么?它可能有助于记忆/情境化.
谢谢.
在SAS中删除表的最有效方法是什么?
我有一个循环和删除大量表的程序,并想知道PROC SQL之间是否存在性能差异; 和PROC DATASETS; 一次删除一个表..
或者如果有另一种方式或许???
我创建了以下宏.Proc power返回pw_cout包含列的表Power.该data _null_步骤将列Power中的值分配pw_out给宏变量tpw.我希望宏返回值tpw,以便在主程序中,我可以在DATA步骤中调用它,如:
data test;
set tmp;
pw_tmp=ttest_power(meanA=a, stdA=s1, nA=n1, meanB=a2, stdB=s2, nB=n2);
run;
Run Code Online (Sandbox Code Playgroud)
这是宏的代码:
%macro ttest_power(meanA=, stdA=, nA=, meanB=, stdB=, nB=);
proc power;
twosamplemeans test=diff_satt
groupmeans = &meanA | &meanB
groupstddevs = &stdA | &stdB
groupns = (&nA &nB)
power = .;
ods output Output=pw_out;
run;
data _null_;
set pw_out;
call symput('tpw'=&power);
run;
&tpw
%mend ttest_power;
Run Code Online (Sandbox Code Playgroud) 我使用R包GBM可能是我预测建模的首选.有关于这个算法,但在一个"坏"这么多伟大的事情是,我不能轻易使用型号代码进球我要编写能够在SAS或其他系统中使用的代码外河的新数据(我将开始与SAS(无法访问IML)).
假设我有以下数据集(来自GBM手册)和型号代码:
library(gbm)
set.seed(1234)
N <- 1000
X1 <- runif(N)
X2 <- 2*runif(N)
X3 <- ordered(sample(letters[1:4],N,replace=TRUE),levels=letters[4:1])
X4 <- factor(sample(letters[1:6],N,replace=TRUE))
X5 <- factor(sample(letters[1:3],N,replace=TRUE))
X6 <- 3*runif(N)
mu <- c(-1,0,1,2)[as.numeric(X3)]
SNR <- 10 # signal-to-noise ratio
Y <- X1**1.5 + 2 * (X2**.5) + mu
sigma <- sqrt(var(Y)/SNR)
Y <- Y + rnorm(N,0,sigma)
# introduce some missing values
#X1[sample(1:N,size=500)] <- NA
X4[sample(1:N,size=300)] <- NA
X3[sample(1:N,size=30)] <- NA
data <- data.frame(Y=Y,X1=X1,X2=X2,X3=X3,X4=X4,X5=X5,X6=X6)
# fit initial model
gbm1 <- gbm(Y~X1+X2+X3+X4+X5+X6, # formula
data=data, # dataset …Run Code Online (Sandbox Code Playgroud) 我想知道SAS中是否有相同的R Markdown?或者如何在SAS中这样做?我想在下面有彩色SAS代码及其结果.
链接到R Markdown:http://rstudio.org/docs/authoring/using_markdown
我需要连接表A和表B来创建表C.
表A和表B存储ID的状态标志.状态标志(A_Flag和B_Flag)可以不时更改,因此一个ID可以包含多行,表示ID状态的历史记录.特定ID的标志可以彼此独立地改变,这可以导致表A中的一行属于表B中的多行,反之亦然.
结果表(表C)需要是唯一日期范围的列表,其中包括ID生命周期中的每个日期(01/01/2008-18/08/2008),以及每个日期范围的A_Flag和B_Flag值.
实际表包含数百个ID,每个ID每个表具有不同的行数.
我可以访问SQL和SAS工具来实现最终结果.
Source - Table A
ID Start End A_Flag
1 01/01/2008 23/03/2008 1
1 23/03/2008 15/06/2008 0
1 15/06/2008 18/08/2008 1
Source - Table B
ID Start End B_Flag
1 19/01/2008 17/02/2008 1
1 17/02/2008 15/06/2008 0
1 15/06/2008 18/08/2008 1
Result - Table C
ID Start End A_Flag B_Flag
1 01/01/2008 19/01/2008 1 0
1 19/01/2008 17/02/2008 1 1
1 17/02/2008 23/03/2008 1 0
1 23/03/2008 15/06/2008 0 0
1 15/06/2008 18/08/2008 1 1
Run Code Online (Sandbox Code Playgroud) 我想从我创建的SAS宏中返回一个值,但我不确定如何.宏计算数据集中的观察数.我希望返回观察数量.
%macro nobs(library_name, table_name);
proc sql noprint;
select nlobs into :nobs
from dictionary.tables
where libname = UPCASE(&library_name)
and memname = UPCASE(&table_name);
quit;
*return nobs macro variable;
&nobs
%mend;
%let num_of_observations = %nobs('work', 'patients');
Run Code Online (Sandbox Code Playgroud)
另外,我希望&nobs宏中使用的宏变量对于该宏是本地的而不是全局的.我怎样才能做到这一点?