0

我有以下代码:

  visitnum = put(visitn,visitnumber.);

这是针对

  proc format;
   value visitnumber
  'Screening Assessment' = 1
  'Treatment Visit - Day 1' = 2
  'Treatment Visit - Day 7' = 3
  'Treatment Visit - Day 14/15' = 4
  'Follow-Up Visit - Day 28' = 5
 run;

但是,当我输出“visitnum”变量时,它会将“Treatmen”作为匹配列的输出。

4

2 回答 2

2

如果这是字符转数字,则需要使用信息而不是格式。

proc format;
   invalue visitnumber
      'Screening Assessment'        = 1
      'Treatment Visit - Day 1'     = 2
      'Treatment Visit - Day 7'     = 3
      'Treatment Visit - Day 14/15' = 4
      'Follow-Up Visit - Day 28'    = 5
  ;
 run;

例子:

data foo;
    length visitn $27.;

    do visitn = 'Screening Assessment'
              , 'Treatment Visit - Day 1'
              , 'Treatment Visit - Day 7'
              , 'Treatment Visit - Day 14/15'
              , 'Follow-Up Visit - Day 28'
    ;
        visitnum = input(visitn, visitnumber.);
        output;
    end;
run;

输出:

visitn                        visitnum
Screening Assessment          1
Treatment Visit - Day 1       2
Treatment Visit - Day 7       3
Treatment Visit - Day 14/15   4
Follow-Up Visit - Day 28      5
于 2021-10-22T15:07:25.033 回答
0

您对结果的描述似乎表明输入字符串与格式知道的任何值都不匹配。在这种情况下,PUT() 函数只会回显输入。如果 PUT() 函数调用中使用的格式规范的宽度短于输入字符串的长度,则可能会发生截断。或者,如果目标变量 VISITNUM 的定义比 PUT() 函数返回的字符串短,则可能会发生截断。

因此,要么 VISITN 的值与 FORMAT 知道的任何值都不匹配,要么找不到格式。

于 2021-10-22T15:16:03.080 回答