是否可以在SAS中使用长度小于3个字节的数字变量?

时间:2017-03-13 18:49:00

标签: sas

我在SAS数据集中有一个长度为8的数字变量。尽管它的长度是8个字节,但它只包含一个数字。见下面的例子。

my_variable
1
2
5
9
0
3

问题是我需要这个变量长度只有1个字节,SAS不接受它。我正在运行以下代码:

data my_data_2;
set  my_data;
length my_variable 1;
run;

SAS报告此错误消息:

ERROR 352-185: The length of numeric variables is 3-8.

1 - 那么,为什么我不能有一个长度小于3(或大于8)字节的数字变量?

2 - 有办法管理吗?我真的需要这个变量长度为1。

修改 - 添加更多内容:

我需要将此特定变量设为长度1,因为我需要将此数据集提交给我国的监管机构。他们要求这个变量是数字和长度为1,否则他们的验证程序将无法读取它。此外,它需要以.DBF文件的形式提交(只需使用SAS proc export语句即可完成。)

我尝试使用Microsoft Access 2013将长度更改为1并且它可以正常工作。问题是Access 2013不会读取或保存.DBF,因为它是旧的文件格式。所以,我想改变SAS的长度,只需将其导出.DBF。

3 个答案:

答案 0 :(得分:1)

根据documentation

  

Windows和UNIX上运行的SAS变量的最小长度   系统为3个字节,最大长度为8个字节。在IBM上   大型机,SAS变量的最小长度是2个字节,而   最大长度为8个字节。

SAS数字变量长度以字节计,而不是数字。

如果你需要一个标志,请使用字符变量。

答案 1 :(得分:0)

SAS中数字变量的长度是它可以存储的字节数。由于SAS仅使用浮点数,它们不能小于3 bytes in Windows or Unix (2 in z/OS);基础SAS中没有整数或二进制/位数据类型。

欢迎您使用格式来控制屏幕上显示的字段宽度。

答案 2 :(得分:0)

我认为PROC EXPORT会写长度为1的数字变量。你只需要附加一个格式就可以让proc知道你想要的那样。

试试这个测试程序。

%let fname=%sysfunc(pathname(work))/test.dbf ;
data test;
 length male 8 sex $1 female 8;
 set sashelp.class(obs=3 keep=sex );
 male=(sex='M');
 female=(sex='F');
 format male female F1.;
run;
proc export data=test outfile="&fname" replace 
  dbms=dbf
;
run;

然后将DBF文件的内容作为二进制文件转储到日志

data _null_;
  infile "&fname" recfm=f lrecl=32;
  input;
  list;
run;

并将其与文件格式https://en.wikipedia.org/wiki/.dbf#File_architecture_overview

的描述进行比较