我有一个函数,可以将一个值以一种格式转换为另一种格式.例如,它类似于将华氏度转换为摄氏度.

很简单,公式是:

l = -log(20/x)

我从一位同事那里继承了SAS代码,他的x值范围内硬编码如下:

"if x= 'a' then x=l;"

这显然是乏味和有限的范围.

如何最好地将其转换为可以在SAS脚本中调用的函数?

我以前在Python中的版本是:

def function(x):
    l = -np.log10(20/float(x))
    return l

然后简单地调用函数.

谢谢你的帮助-我正在从Python过渡到SAS,并试图找出如何切换.

推荐答案

如Joe所说,如果您对编写自己的函数感兴趣,proc fcmp是一种方法.这将允许您创建行为类似于SAS函数的函数.它与Python函数非常相似.

这需要一点设置,但它真的很好,因为这些函数都保存在SAS数据集中,可以从一个环境传输到另一个环境.

下面的代码创建了一个名为f()的函数,其作用与Python函数相同.

proc fcmp outlib=work.funcs.log;
    function f(x);
        l = log10(20/x);
        return(l);
    endfunc;
run;

options cmplib=work.funcs;

这需要做三件事:

  1. 创建一个名为f()的函数,该函数接受一个输入x
  2. 将函数保存在名为work.funcs的数据集中,该数据集包含所有函数
  3. 标记包log下的所有功能

不要太担心标签.如果您需要许多不同的功能包,例如:时间、日期、字符串等,那么它很方便.它有助于组织,但它是必需的标签.大多数时候我只做了work.funcs.funcs次.

options cmplib=work.funcs表示加载包含所有感兴趣函数的数据集funcs.

您可以在下面测试您的功能:

data test;
    l1  = f(1);
    l2  = f(2);
    l10 = f(10);
run;

输出:

l1              l2  l10
1.3010299957    1   0.3010299957

此外,SAS确实有一个Python接口.如果您更喜欢用Python编程,take a look at SASPy可以同时获得SAS和Python的所有好处.

Python相关问答推荐

如何在Raspberry Pi上检测USB并使用Python访问它?

如何从pandas的rame类继承并使用filepath实例化

部分视图的DataFrame

python中字符串的条件替换

计算天数

基于形状而非距离的两个numpy数组相似性

Flash只从html表单中获取一个值

如何防止Pandas将索引标为周期?

跳过嵌套JSON中的级别并转换为Pandas Rame

基于多个数组的多个条件将值添加到numpy数组

在Google Drive中获取特定文件夹内的FolderID和文件夹名称

解决Geopandas和Altair中的正图和投影问题

根据过滤后的牛郎星图表中的数据计算新系列

我怎样才能让深度测试在OpenGL中使用Python和PyGame呢?

时间戳上的SOAP头签名无效

Django REST框架+Django Channel->;[Errno 111]连接调用失败(';127.0.0.1';,6379)

如何在开始迭代自定义迭代器类时重置索引属性?

为什么任何一个HTML页面在保存到文件后都会变大6个字节?

SQL模型中包含日期时间的TypeError

在Python中使用unittest中的补丁进行动态模拟