我使用以下代码在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;
它将删除所有记录,因此我那里没有更多数据。我在做什么错了?
此外,也许最好用if / then语句在连续变量的基础上简单地创建一个新变量(存储桶版本)?
答案 0 :(得分:2)
您只是不设置数据集-而是创建一个新数据集。
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;
答案 1 :(得分:0)
在输入和输出数据集中使用相同名称进行编程是一个糟糕的主意,这使得发现错误非常困难。
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;
和:
*applying a format means that it sorts correctly for display;
proc freq data=right_formatted;
table age age_formatted ;
format age ageBuckets.;
run;
@Python R SAS用户的格式也正确。