sas - SAS:如何在数据步骤中添加带括号和引号的值?
问题描述
我想使用 SAS 中的数据步骤创建一个表,其中包含 SSRS 的显示格式代码。
例如,我有一些类似 '#,0;(#,0)' 的代码,但是当我尝试在数据步骤中分配此值时出现错误。我也尝试先将其放入宏中,但没有帮助。
代码:
%let fmt1 = %STR(#,0;(#,0)); *thousand-comma separator;
data FORMAT_XREF;
length METRIC_TYPE DSP_FORMAT $ 20;
if METRIC_TYPE = 'TOT_ACCT' then
do;
DSP_FORMAT = quote(&fmt1.);
end;
run;
错误:34 #,0;(#,0) _ _ 386 180 _ 76 错误 386-185:需要算术表达式。
错误 180-322:语句无效或使用顺序不正确。
ERROR 76-322:语法错误,语句将被忽略。
解决方案
您的问题是您认为该quote
函数的作用与其不同。
quote 函数将双引号字符添加到某些内容,而不是用于分隔字符值的引号。它仍然需要一个字符值作为输入,而您没有提供它(宏变量包含文本,而不是字符值,请记住)。
所以你需要:
%let fmt1 = %STR(#,0;(#,0)); *thousand-comma separator;
data FORMAT_XREF;
length METRIC_TYPE DSP_FORMAT $ 20;
if METRIC_TYPE = 'TOT_ACCT' then
do;
DSP_FORMAT = "&fmt1.";
end;
run;
这对你来说应该很好。如果您实际上还需要值中的引号,则可以将函数包装在该值周围(quote
因此DSP_FORMAT = quote("&fmt1.");
将存储"#,0;(#,0)"
在变量中,包括"
字符)。
推荐阅读
- python - 使用列表推导计算所有列表元素的总和
- java - 尝试从 Helidon MP 读取文件时出错
- git - 创建然后合并两个完全不相关的 git 分支
- python - 使用 python pandas 对数据框进行永久更改
- mongodb - `mongoose.model()` 的第二个参数应该是模式或 POJO
- python - Python Selenium 选择具有相似类名的元素
- java - Java 将 Arrays$ArrayList 导出到 csv
- javascript - 如何计算给定大块(例如 5GB)的摘要?
- c++ - 使用模板类c ++的朋友函数
- python - 使用 VPN 使用 MongoClient 保存文档时出现 ServerSelectionTimeoutError,没有身份验证错误