1

我在想一个问题:如何使用 informat.create 创建一个新变量。像:我们有这样的信息:

proc format ;
 invalue  $agegrpcd   
               1 = '<18'
               2 = '18 - 29'
               3 = '30 - 39'
               4 = '40 - 49'
               5 = '50 - 65'
               6 = '> 65'
               . = 'Missing' ;run;

和这样的数据集:

data age;
    input age 4. ;
    cards;
    22
    34
    13
    45
    64
    33
    ;run;

现在我想要一个这样的数据集:

age  agegroup
15  <18
25   18 - 29
33   30 - 39
45   40 - 49
64   50 - 65
77   > 65

有没有办法通过使用我构建的信息将数字变量年龄放入字符变量年龄组?谢谢。

4

1 回答 1

3

您需要更改您的 PROC 格式语句并创建格式,而不是信息。

proc format ;
value  agegrpcd   
           0-17 = '<18'
           18-29 = '18 - 29'
           30-39 = '30 - 39'
           40-49 = '40 - 49'
           50-65 = '50 - 65'
           66-high = '> 65'
           . = 'Missing' ;
run;

之后,使用 PUT() 函数将数字转换为字符串。

data age;
set age;
agegroup=put( age, agegrpcd8.);
run;
于 2016-01-04T14:35:22.537 回答