You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Prompt中输入的多值存入SAS数据表?

解决方法

根据你的需求,分两种场景给出对应解决方案:

场景1:将Prompt输入的多个CPF值直接存入新数据表TESTE

你之前的代码逻辑有误,keep=用于保留原数据表的变量,无法实现将输入的多个值作为观测存入新表的需求。正确做法是通过宏循环拆分宏变量&CPF中的多个值,逐个写入数据步:

/* 假设&CPF为空格分隔的多个CPF值,例如"12345678901 98765432109" */
data TESTE;
    length CPF $11; /* 按CPF实际长度定义变量类型,巴西CPF为11位字符 */
    %do i=1 %to %sysfunc(countw(&CPF));
        CPF = scan("&CPF", &i);
        output;
    %end;
run;

这段代码通过countw统计&CPF中值的数量,再用宏循环逐个提取每个CPF值,赋值给变量后输出到TESTE表,最终表中每条观测对应一个输入的CPF值。

场景2:从原数据表original中筛选出CPF匹配输入值的观测

如果你的实际需求是从original表中筛选出CPF在输入值范围内的数据,需要用where语句而非keep=,同时注意变量类型的处理:

若CPF为字符型:

先将宏变量&CPF转换为带引号的格式,再用于筛选:

/* 处理宏变量,给每个CPF值添加引号 */
%let CPF_quoted = %sysfunc(tranwrd(&CPF, %str( ), %str(',')));
%let CPF_quoted = "&CPF_quoted";

data TESTE;
    set original;
    where CPF in (&CPF_quoted);
run;

若CPF为数值型:

直接使用in语句即可:

data TESTE;
    set original;
    where CPF in (&CPF);
run;

内容的提问来源于stack exchange,提问作者fabio jr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:36:05