是否有命令或快速方法将PDV中的所有现有变量设置为缺失?
我有一些代码运行如下:
Data example2;
var1='A';
Var2='B';
Var3='C';
/* etc*/
output;
Var1='B';
output;
stop;
run;
Run Code Online (Sandbox Code Playgroud)
一旦达到第一个"输出"语句,我想将所有PDV变量重置为缺失(例如var2 =''; var3 ='';),但不必手动声明它们.有人可以帮忙吗?
我是 SAS 初学者,我很好奇以下任务是否可以像目前在我脑海中那样更简单地完成。
我在名为 user_date_money 的表中有以下(简化的)元数据:
用户 - 日期 - 金钱
每个日历日(过去 4 年)的各种用户和日期。数据按 User ASC 和 Date ASC 排序,示例数据如下所示:
User | Date | Money
Anna 23.10.2013 5
Anna 24.10.2013 1
Anna 25.10.2013 12
....
Aron 23.10.2013 5
Aron 24.10.2013 12
Aron 25.10.2013 4
....
Zoe 23.10.2013 1
Zoe 24.10.2013 1
Zoe 25.10.2013 0
Run Code Online (Sandbox Code Playgroud)
我现在想计算货币的五天移动平均线。我从非常流行的 apprach 开始,带有这样的 lag() 函数:
data cma;
set user_date_money;
if missing(money) then
do;
OBS = 0;
money = 0.0;
end;
else OBS = 1;
money5 = …Run Code Online (Sandbox Code Playgroud) 如何删除SAS数据步骤中的重复项.
data uscpi;
input year month cpi;
datalines;
1990 6 129.9
1990 7 130.4
1990 8 131.6
1990 9 132.7
1991 4 135.2
1991 5 135.6
1991 6 136.0
1991 7 136.2
;
run;
PROC SORT DATA = uscpi OUT = uscpi_dist NODUPKEY;
BY year ;
RUN;
Run Code Online (Sandbox Code Playgroud)
我可以使用proc步骤,但如何在数据步骤中删除它.提前致谢
我们可以使用语法通过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)
如何在数据步骤中执行此操作?
我想读取一个文件并找到单词 \xe2\x80\x9cthe\xe2\x80\x9d 并引入换行符。即查找并替换文本\xe2\x80\x98the\xe2\x80\x99为\xe2\x80\x98/nthe\xe2\x80\x99 Can you please help?
/*input.txt*/\n Many a slip between the cup and the lip. \n\n /*Required output*/\n Many a slip between \n the cup and \n the lip. \n\n /*sas datastep*/\n data inp;\n infile "c:/tmp/input.txt";\n /*ADD LOGIC*/\n infile "c:/tmp/output.txt";\n run;\nRun Code Online (Sandbox Code Playgroud)\n 我有一个SAS数据集:
+-------+-------+-------+-------+
| var_1 | var_2 | var_3 | index |
+-------+-------+-------+-------+
| 1 | 10 | 100 | 2 |
| 2 | 20 | 200 | 1 |
| 3 | 30 | 300 | 3 |
+-------+-------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
现在,我想在同一个数据集中创建一个新变量,每个行的值来自var_1,var_2和var_3之一,使用索引变量中的相应条目.
也就是说,如果我的输出变量是var_out,那么数据集将如下所示:
+-------+-------+-------+-------+---------+
| var_1 | var_2 | var_3 | index | var_out |
+-------+-------+-------+-------+---------+
| 1 | 10 | 100 | 2 | 10 |
| 2 | 20 | 200 | 1 | 2 |
| 3 | …Run Code Online (Sandbox Code Playgroud) 我想带着这些日子面临的挑战来到这里.
基本上对于每个记录,应该在put语句中使用不同的格式,并且它在自己的数据中定义.
挑战不是分割datasteps并在datastep中获得想要的结果,所以避免明显的%do循环和类似:)
proc format;
value $a 'FRS'='FIRST';
value $b 'SCN'='SECOND';
run;
data a;
length var $3 res $10 fmt $5;
var='FRS'; fmt='$a.'; res=''; output;
var='SCN'; fmt='$b.'; res=''; output;
run;
data b;
set a;
*your code goes here, the result should go into res variable;
*and should be the "putted" value of var using fmt as format.;
*an obviously non working version can be found here below;
res=put(var,fmt);
run;
Run Code Online (Sandbox Code Playgroud)
下面是它的样子,res是预期的结果:
VAR FMT RES
---------------
"FRS" $a. =put("FRS",$a.)="FIRST"
"SCN" $b. =put("SCN",$b.)="SECOND"
Run Code Online (Sandbox Code Playgroud)