Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 保留substr创建的变量_Sas - Fatal编程技术网

Sas 保留substr创建的变量

Sas 保留substr创建的变量,sas,Sas,我有一个包含多个变量的数据集,其中一个变量是truc。我想创建一个新变量,它只是变量truc的前两个字符,我们称之为truc2 我知道如何创造它 data want ; set have; truc2=substr(truc,1,2); run; 我的问题是,如果我只这样做,我的新变量truc2就不会保存在我的want表中。 我可以添加一个keep指令wantkeep=var2,但是我还必须添加我想要保留的所有变量,这非常繁琐。 此外,如果我添加一个变量,例如 truc3=tr

我有一个包含多个变量的数据集,其中一个变量是truc。我想创建一个新变量,它只是变量truc的前两个字符,我们称之为truc2

我知道如何创造它

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;