gpt4 book ai didi

sas - 从SAS中的字符串中删除单引号

转载 作者:行者123 更新时间:2023-12-04 14:29:14 24 4
gpt4 key购买 nike

我需要从宏retrieve_context 中读取带有单引号和不带引号的字符串。

调用宏时,用户可以使用单引号或不使用引号来调用它,如下所示:

%retrieve_context('american%s choice', work.phone_conv, '01OCT2015'd, '12OCT2015'd)
%retrieve_context(american%s choice, work.phone_conv, '01OCT2015'd, '12OCT2015'd)

如何在没有单引号的情况下读取宏中的第一个参数?

我试过 %conv_quote = unquote(%str(&conv_quote))但它没有用。

最佳答案

您遇到了宏和数据步骤语言之间的差异之一。

在宏中,有一个“引用”的概念,因此 %unquote宏功能。这不是指传统的 "'字符,虽然;宏引用是一个单独的东西,实际上没有任何引号字符[在这方面的某些上下文中使用了一些字符,但它们更像是占位符]。它们来自 %str 等函数, %nrstr , 和 %quote ,它标记了宏变量中的某些事物,以便在它们被预期之前不会被解析。

但是,在大多数情况下,宏语言并不真正关注 '。和 "字符,除非在某些解析上下文中标识带引号的字符串,在这些上下文中必须这样做以使事情合乎逻辑。因此,%unquote不对引号做任何事情;它们被简单地视为常规字符。

相反,您需要调用数据步骤函数来删除它们(或其他一些东西,但它们都更复杂,比如使用 %substr%index 的各种组合)。这是使用 %sysfunc 完成的。 ,像这样:

%let newvar = %sysfunc(dequote(oldvar));
Dequote()是数据阶跃函数,其功能与 %unquote 大致相同,但对于普通引号字符( "' )。根据您的最终使用情况,您可能需要做的还不止这些;汤姆涵盖了其中几种可能性。

关于sas - 从SAS中的字符串中删除单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33090797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com