【发布时间】:2025-11-22 14:25:01
【问题描述】:
我目前正在学习 SAS,已经了解 R 和其他编程语言,我对如何声明向量感到困惑。
我创建了一个模仿 R cut 函数的小函数:
proc fcmp outlib=sasuser.funcs.trial;
function cut(var, cutoff1, cutoff2, cutoff3, value1, value2, value3, value4);
if var<cutoff1 then x=value1;
if var>=cutoff1 & var<cutoff2 then x=value2;
if var>=cutoff2 & var<cutoff3 then x=value3;
if var>=cutoff3 then x=value4;
return (x);
endsub;
CUTTED_COL = cut(NOT_CUTTED_COL, 3.5, 5, 7.5, 0, 0.5, 1, 2);
该函数运行良好,但与此数量的参数相关。这里,var 是数据集中的一列,我将用它来创建另一个列。
为了进行下一步,我想添加参数,因为在 R 中名为 vectors。我认为 vectors 在 SAS 中被命名为 arrays,但我不确定它是否是相同的结构没错。
proc fcmp outlib=sasuser.funcs.trial;
function cut2(var, cutoffs, values);
/*loop over vectors with a do*/;
return (x);
endsub;
CUTTED_COL = cut(NOT_CUTTED_COL, {3.5, 5, 7.5}, {0, 0.5, 1, 2});
当然,这种语法失败得很惨。怎么写正确?
注意:即使有比自定义函数更好的方法(我尝试了 proc 格式,但它不是我想要的),关于向量和函数的真正问题的答案也非常欢迎教育目的。
NB2:如果答案是 RTFM,我想知道是哪一部分
最后:这是我使用 DomPazz 的代码 (link) 编写的 cut 函数。像魅力一样工作。
【问题讨论】: