在SAS中格式化以创建存储桶

在SAS中格式化以创建存储桶,sas,format,Sas,Format,我使用以下代码在SAS中存储连续变量,但它不起作用: proc freq data = right; table Age; run; proc format; value AgeBuckets low -< 74 = "Younger" 75 -< 84 = "Older" 85 - high = "Oldest" run; data right; format Age AgeBuckets.; run; proc freq data=right;

我使用以下代码在SAS中存储连续变量,但它不起作用:

proc freq data = right;
  table Age;
run; 

proc format;
value AgeBuckets  
  low -<  74 = "Younger"
  75 -< 84 = "Older"
  85 - high = "Oldest"
run;

data right;
  format Age AgeBuckets.;
run;
proc freq data=right;
桌龄;
跑
proc格式;
价值桶
低-<74=“更年轻”
75-<84=“更老”
85-高=“最老”
跑
数据权;
设置存储桶的格式。;
跑
它删除了所有的记录,所以我没有更多的数据在那里。我做错了什么


此外,最好是在使用if/then语句的连续变量的基础上创建一个新变量(带扣的版本)?

您只是没有设置数据集,而是创建一个新的数据集

data right;
  set right;
  format Age AgeBuckets.;
run;

proc print;
run;
此外,您还将74岁和84岁的孩子排除在外。您可能还希望将它们包括在内:

proc format;
value AgeBuckets  
  low -<  74 = "Younger"
  74 -< 84 = "Older"
  84 - high = "Oldest"
run;
proc格式;
价值桶
低-<74=“更年轻”
74-<84=“更老”
84-高
跑

您只是没有设置数据集,而是创建一个新的数据集

data right;
  set right;
  format Age AgeBuckets.;
run;

proc print;
run;
此外,您还将74岁和84岁的孩子排除在外。您可能还希望将它们包括在内:

proc format;
value AgeBuckets  
  low -<  74 = "Younger"
  74 -< 84 = "Older"
  84 - high = "Oldest"
run;
proc格式;
价值桶
低-<74=“更年轻”
74-<84=“更老”
84-高
跑
  • 您在数据步骤中出错,因为没有SET语句,所以没有引用输入文件
  • 使用IF/THEN语句很少更有效
  • 如果您想要一个新变量,请使用PUT来转换它,如图所示
  • 在编程中,输入和输出数据集使用相同的名称是一个坏主意,这样很难发现错误

    proc format;
    value AgeBuckets  
      low  -< 75 = "Younger"
      75 -< 85 = "Older"
      85 - high = "Oldest"
    run;
    
    data right_formatted;
      set right;
      format Age AgeBuckets.;
      *create new variable with formatted value, will not sort correctly;
      Age_Formatted = put(age, ageBuckets.);
    run;
    
    @pythonrsas用户对您的格式也是正确的

  • 您在数据步骤中出错,因为没有SET语句,所以没有引用输入文件
  • 使用IF/THEN语句很少更有效
  • 如果您想要一个新变量,请使用PUT来转换它,如图所示
  • 在编程中,输入和输出数据集使用相同的名称是一个坏主意,这样很难发现错误

    proc format;
    value AgeBuckets  
      low  -< 75 = "Younger"
      75 -< 85 = "Older"
      85 - high = "Oldest"
    run;
    
    data right_formatted;
      set right;
      format Age AgeBuckets.;
      *create new variable with formatted value, will not sort correctly;
      Age_Formatted = put(age, ageBuckets.);
    run;
    

    @Python R SAS用户对您的格式也是正确的。

    这正是注释的帮助所在,因为我们并不总是知道您要做什么。不,使用IF/THEN语句从来没有比使用IF/THEN语句更有效。这才是注释真正有用的地方,因为我们并不总是知道您想要做什么。不,使用IF/THEN语句永远不会更有效。put很棒!它更改了新的age_格式变量以及“原始”age变量。我是否可以使用put,以便原始的年龄分布与新的格式化版本保持一致?因此,最初的年龄分布(比如说)50级是第一列,它旁边的一列有3级(不算缺失)。还有一个问题——在使用put时,我会非常感兴趣的是,它是否将年龄级别压缩成数字,比如1、2、3,而不是文本。有没有一种简单或推荐的方法可以做到这一点?
    format
    语句更改原始变量的显示
    put
    将其重新编码为新变量,类似于IF/THEN。要更改显示或显示的值,请更改格式。您确实需要了解这里的每个步骤,因为这是在SAS中使用数据的一些基础知识。所以,改变不同的事情,看看会发生什么,这样你就能明白每一行都在做什么。put很棒!它更改了新的age_格式变量以及“原始”age变量。我是否可以使用put,以便原始的年龄分布与新的格式化版本保持一致?因此,最初的年龄分布(比如说)50级是第一列,它旁边的一列有3级(不算缺失)。还有一个问题——在使用put时,我会非常感兴趣的是,它是否将年龄级别压缩成数字,比如1、2、3,而不是文本。有没有一种简单或推荐的方法可以做到这一点?
    format
    语句更改原始变量的显示
    put
    将其重新编码为新变量,类似于IF/THEN。要更改显示或显示的值,请更改格式。您确实需要了解这里的每个步骤,因为这是在SAS中使用数据的一些基础知识。所以,改变不同的事情,看看会发生什么,这样你就能明白每一行都在做什么。