转换变量类型SAS

时间:2017-03-01 15:52:00

标签: sas

我有两个合并的数据集(称为"趋势"和"保险"),两者都有类似的变量。其中一个类似的变量是" Race",除了"趋势"数据集,Excel已将其编码为字符变量,并在"保险"数据集,Excel将其编码为数字。当然,如果它们不属于同一类型,我就无法将这两个变量合并,我尝试在"格式"中将类型更改为Excel中的数字。选项。它似乎没有效果。一旦我在SAS中重新导入我的XLS文件,它继续说" Race"是字符,而不是数字。

所以我尝试在SAS中进行转换,如下所示:

DATA trends;
new = input(Race, 8.);
drop Race;
RENAME new = Race;
RUN;

这是输出。

NOTE: Numeric values have been converted to character values at the places   
given by:
(Line):(Column).
66:13
NOTE: Variable Race is uninitialized.
NOTE: The data set WORK.TRENDS has 1 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.00 seconds

但是当我的PROC CONTENTS DATA =趋势时,我最终得到了什么;在新数据集中根本没有观察结果。应该有超过800个观察结果和20多个变量,就像我最初将XLS文件导入SAS一样。

以下是PROC CONTENTS在转换后的输出" Race"数字:

Obs Race 
1   . 

我的所有观察和其他变量发生了什么变化?基本上,整个数据集"趋势"现在不见了。

1 个答案:

答案 0 :(得分:1)

DATA trends;
new = input(Race, 8.);
drop Race;
RENAME new = Race;
RUN;

SAS从哪里获取race的输入数据?您需要set语句才能从现有数据集中获取,或inputinfile从文本文件中获取它。

在这种情况下听起来应该是:

DATA trends;
  set trends;
  new = input(Race, 8.);
  drop Race;
  RENAME new = Race;
RUN;

虽然我总是向新数据集推荐一个不同的名称,但如果您发现某些错误,则无法重新运行此步骤。例如data trends_racenum; set trends;...会很好(显示它中有数字竞赛)。