如何将SAS日期转换"30JUL2009"d为YYYYMMDD格式(例如20090730)?
例如:
data _null_;
format test ?????;
test=today();
put test=;
run;
Run Code Online (Sandbox Code Playgroud)
会在日志中给我"test = 20090730"...
我正在努力学习R并且我已经在SAS工作了10多年,但我无法找到最好的R方法.拿这些数据:
id class t count desired
-- ----- ---------- ----- -------
1 A 2010-01-15 1 1
1 A 2010-02-15 2 3
1 B 2010-04-15 3 3
1 B 2010-09-15 4 4
2 A 2010-01-15 5 5
2 B 2010-06-15 6 6
2 B 2010-08-15 7 13
2 B 2010-09-15 8 21
Run Code Online (Sandbox Code Playgroud)
我想通过id,class和4个月的滚动窗口计算所需的列作为滚动总和.请注意,对于id和class的每个组合,并非所有月份都存在.
在SAS中,我通常采用以下两种方式之一:
RETAIN 加上一个id和class. PROC SQL 左边连接从df作为df1到df作为df2在id,class和df1.d-df2.d在相应的窗口中 解决此类问题的最佳方法是什么?
t <- as.Date(c("2010-01-15","2010-02-15","2010-04-15","2010-09-15",
"2010-01-15","2010-06-15","2010-08-15","2010-09-15"))
class <- c("A","A","B","B","A","B","B","B")
id <- c(1,1,1,1,2,2,2,2)
count <- seq(1,8,length.out=8)
desired <- c(1,3,3,4,5,6,13,21)
df <- data.frame(id,class,t,count,desired)
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宏中使用的宏变量对于该宏是本地的而不是全局的.我怎样才能做到这一点?
我需要在一个SAS数据集中导入大量的csv文件.它们都具有相同的数据结构(相同的变量,第一行的变量名称).我通常在SQL中工作,但我被迫参与SAS中的这个特殊项目,我只掌握了基础知识.
目前,我的代码如下所示:
proc import out=work.data
datafile = file1.csv
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
proc import out=work.newData
datafile = file2.csv
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
proc append base=work.data
data=work.newData force;
run;
Run Code Online (Sandbox Code Playgroud)
等等为file3.csv ... file4.csv.
我确信,有一种更优雅的方法,即在一个文件夹上循环所有csv文件而不显式写入它们(有几千个文件).
谢谢你的帮助.
我在SAS中尝试了这个代码,但输出与我预期的不一样.
data temp;
input sumy;
datalines;
36
;
run;
data aaa;
if _n_ = 1 then
set temp;
run;
proc print data = aaa;
run;
Run Code Online (Sandbox Code Playgroud)
请问为什么有两个观察结果,sas有两次"设定"?在迭代期间,"set"和PDV如何在这里工作?先感谢您.
我试图在laravel队列中运行一个简单的工作.这是我的工作:
class SearchFromSource extends Job implements SelfHandling, ShouldQueue {
use InteractsWithQueue, SerializesModels;
public function handle() {
echo time();
}
}
Run Code Online (Sandbox Code Playgroud)
有我的代码:
$job = (new SearchFromSource($this));
$this->dispatch($job);
Run Code Online (Sandbox Code Playgroud)
问题是,当我queue:listen在commend行中运行并运行我的代码时,我发现该作业已被执行了两次.
如何向安装程序添加默认路径(例如C:\ Program Files ...).(我的意思是硬编码变量,例如,它.)
提前谢谢...
在数据集Work.Invest中,Year的存储值是多少?
数据工作.invest; 做年= 1990年至2004年; 资本+ 5000; 资本+(资本*0.10); 结束; 跑;
SAS基础准备指南中给出的正确答案是d.2005.
在下面的问题中,存储的值是2004年.对于下面显示的程序,以下哪项陈述是错误的?
数据工作.invest; 做年= 1990年至2004年; 资本+ 5000; 资本+(资本*0.10); 输出; 结束; 跑;
DATA步骤结束时的自动输出.DO loop执行15次迭代.对此的正确答案是b.2005.(确定虚假陈述是问题).
我们可以使用语法通过SAS SQL Procedure创建宏变量
select var into :mvar
Run Code Online (Sandbox Code Playgroud)
但我想知道在数据步骤中是否存在相同的方式.
我有一个数据集.
A B
=== ===
a1 b1
a2 b2
a3 b3
Run Code Online (Sandbox Code Playgroud)
我可以MA使用下面的语句创建一个宏变量.
proc sql noprint;
select "'"||A||"'" into :MA separated by ","
from dataset;
quit;
Run Code Online (Sandbox Code Playgroud)
如何在数据步骤中执行此操作?
请考虑此示例SAS宏代码:
%MACRO reports;
%IF &SYSDAY = Monday %THEN %DO;
%END;
%MEND reports;
Run Code Online (Sandbox Code Playgroud)
宏中的每个单词都需要以%?为前缀吗?这个%符号究竟意味着什么?
有谁知道为什么proc sql不能在SAS/DATA STEP中使用
例如,
DATA test;
set lib.table;
PROC SQL;
...
QUIT;
...some operators...
RUN;
Run Code Online (Sandbox Code Playgroud)
在PROC SQL..RUN之后; on运算符未处理.
谢谢你的解释.