Sas 保留substr创建的变量
我有一个包含多个变量的数据集,其中一个变量是truc。我想创建一个新变量,它只是变量truc的前两个字符,我们称之为truc2 我知道如何创造它Sas 保留substr创建的变量,sas,Sas,我有一个包含多个变量的数据集,其中一个变量是truc。我想创建一个新变量,它只是变量truc的前两个字符,我们称之为truc2 我知道如何创造它 data want ; set have; truc2=substr(truc,1,2); run; 我的问题是,如果我只这样做,我的新变量truc2就不会保存在我的want表中。 我可以添加一个keep指令wantkeep=var2,但是我还必须添加我想要保留的所有变量,这非常繁琐。 此外,如果我添加一个变量,例如 truc3=tr
data want ;
set have;
truc2=substr(truc,1,2);
run;
我的问题是,如果我只这样做,我的新变量truc2就不会保存在我的want表中。
我可以添加一个keep指令wantkeep=var2,但是我还必须添加我想要保留的所有变量,这非常繁琐。
此外,如果我添加一个变量,例如
truc3=truc
它是自动保存的
那么为什么substr创建的新变量不是这样呢?在不输入所有其他变量的情况下如何保存它?使用SQL
PROC SQL;
CREATE TABLE want as
SELECT *,
substr(truc,1,2) as truc2
FROM HAVE;
QUIT;
truc是have数据集中的字符变量吗?数字truc将导致始终缺少truc2变量。它是一个字符变量yes。当我精确地保存它时,data wantkeep=truc2给出了期望的变量。然后在现实世界的问题中还有其他的事情发生。你的示例程序运行得很好。愚蠢的问题,我刚刚意识到变量是在前一步创建的,这就是为什么变量的数量没有改变…不是我反对这个解决方案,而是1在一些更好的定义中它更好吗?2尽管如此,我还是很乐意理解为什么我必须在数据步骤中添加keep选项。我对您最初的解决方案不起作用感到困惑。这个解决方案至少会告诉您,您在提交时已经有了一个名为truc2的变量。事实上,它已经有了。谢谢
data want (drop=trunc2);
set have;
truc2=substr(truc,1,2);
run;