我创建了以下宏.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) 我需要连接表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) 我有一个表有两个数字值,称为year和month.我想创建一个具有一个值称为新表ym,而这正串联year和month.这是一个例子:
proc sql;
create table test as
select CONCAT(year, month) as ym from tbl;
run;
Run Code Online (Sandbox Code Playgroud)
CONCAT那里的功能是什么?
div.horizontalRule {
clear:both;
width:100%;
background-color:#d1d1d1;
height:1px;
margin-top:5px;
margin-bottom:5px;
}
Run Code Online (Sandbox Code Playgroud)
这就是我现在正在做的事,但边缘似乎没有效果!我不确定为什么,但是这个"横向规则"上方和下方的文字触及没有边距的水平规则.有没有办法在这种情况下实现利润?
%let test = one;
%let one = two;
%put &test;
%put &&test;
%put &&&test;
%put &&&&test;
%put &&&&&test;
Run Code Online (Sandbox Code Playgroud)
好.我完全被这些&符号击败了.我不明白他们为什么在宏变量之前需要那么多的&符号.有没有什么技巧可以掌握&符号的用法?顺便说一下,五个结果相应的是什么?
在SAS 9中,我如何在简单的数据步骤中重新排列字段的顺序.
Data set2;
/*Something probably goes here*/
set set1;
run;
Run Code Online (Sandbox Code Playgroud)
因此,如果set1具有以下字段:
Name Title Salary
A Chief 40000
B Chief 45000
Run Code Online (Sandbox Code Playgroud)
然后我可以将set2的字段顺序更改为:
Title Salary Name
Chief 40000 A
Chief 45000 B
Run Code Online (Sandbox Code Playgroud)
谢谢,
担
我想从数据集中删除所有空白观察.我只知道如何从一个变量中删除空格:
data a;
set data(where=(var1 ne .)) ;
run;
Run Code Online (Sandbox Code Playgroud)
在这里,我设置了一个没有var1空白的新数据集.但是,当我想摆脱整个数据集中的所有空白时,怎么做呢?
提前感谢您的回答.
有什么解决方案可以在我的电脑上没有安装SAS的情况下打开SAS .egp文件吗?我需要打开project.egp来检查我的旧代码,但我不再有SAS了,那么有没有其他方法可以做到这一点?
我有一个宏变量,&myvar但是当我尝试将它放入数据步变量时它不会解析.为什么不呢,我该怎么做才能解决这个问题呢?
%let myvar=Hello, world;
data _null_;
x='&myvar.';
put x=;
run;
Run Code Online (Sandbox Code Playgroud)