我正在寻找一种方法来创建一个包含数据集的某些值的字符串变量,同时通过数据步骤.
示例数据集work.test:
AddToStringYN Value
Y One
Y Two
N Three
Y Four
N Five
Run Code Online (Sandbox Code Playgroud)
所以最后,变量看起来像:OneTwoFour(甚至更好的FourTwoOne).这看起来很简单,但我似乎无法找到办法.我也尝试使用像这样的宏变量:
%let stringvar=;
Data _null_;
set work.test;
if AddToStringYN = "Y" then do;
call symput('stringvar',"&stringvar" || strip(value));
end;
Run;
Run Code Online (Sandbox Code Playgroud)
但这给了:
GLOBAL STRINGVAR Four
Run Code Online (Sandbox Code Playgroud)
所以我只得到最后一个值.我知道这一定是因为我对这个宏设施有一些误解,但我不明白为什么变量中只有最后一个值.我认为这只是最后一次调用它的实际执行或其他东西,但是当我调整代码时:
%let stringvar=;
Data _null_;
set work.test;
if AddToStringYN = "Y" then do;
call symput('stringvar'||strip(value),"&stringvar" || strip(value));
end;
Run;
Run Code Online (Sandbox Code Playgroud)
然后我确实得到了所有这些:
GLOBAL STRINGVARONE One
GLOBAL STRINGVARTWO Two
GLOBAL STRINGVARFOUR Four
Run Code Online (Sandbox Code Playgroud)
所以我的最后一个猜测是,通过数据步骤,'call symput ...'行实际上被添加到宏处理器中,其中"&stringvar"已经被替换,并且只有在最终语句之后它们全部被执行.
这是一个很好的假设还是有另一种解释?回到最初的问题:是否有一种简单的方法来实现这一目标(拥有所需的变量)?
我正在维护一个遗留应用程序,最近我联系到人们在尝试填充我们的oracle表时收到错误消息.现在,那些oracle表并不在我们看来,但我仍然想尝试一些东西来帮助找到问题.
无论如何,错误消息如下:
java.sql.SQLException:ORA-00001:违反了唯一约束(REO0.PK_TableName):
我知道我可以通过谷歌在这里找到很多信息,这里有关于此错误消息.这不是我的问题所在.
问题是:这里显示的表名(我用粗体表示)是表的名称,还是 PK_部分代表'主键'?
我问的原因是:我不能直接进入这个数据库,但不知怎的,我可以看到REO0中的所有表,我可以找到一个带有TableName但没有一个带有*PK_TableName*作为表的名称.因此,如果这个PK_会引用类似"主键"(违反约束条件)的东西,那么它会更有意义.
我正在寻找用SAS读取PDF文件的方法.显然这不是基本功能,互联网上几乎没有.(更不用说google在搜索中使用PDF并不容易,同时也提供了PDF链接到其他东西的链接.)
可以找到的唯一事情是,人们正在寻找从PDF导入数据到数据集的方法.对我来说,这甚至都不是必要的.我希望能够在一个大字符变量中读取PDF文件的内容.如果可能的话,能够读入文件的二进制数据甚至会更好.
这可能与SAS有关吗?(我让它在Access VBA中工作,但在SAS中找不到任何类似的方法.)
(最后,目的是将其转换为base64并将该base64字符串放入XML文档中.)