SAS:数据集中的字符似乎被截断

时间:2016-11-03 20:21:27

标签: sas string-length

当我将字符的可变长度设置为2个字节时,数据集只显示一个字符。但是,当我打印它时,显示完整的输入。为了使事情变得更加奇怪,当我只改变变量名时,问题就消失了。下面是代码示例,附有我的数据视图和PROC PRINT结果的屏幕截图。

我在Windows 7上使用SAS 9.4。我不确定使用的是什么编码。由于我从未更改过,因此根据此white paper,我认为我的编码为wlatin1。这应该意味着每个ASCII字符是7位。因此,length 2.应该是16位,在存储" AA"时剩下2位。

我无法解释发生了什么,并担心我可能会无意中丢失数据。

data test1;
  length  cut   $ 1.
          full  $ 2.
          ;

  cut   = "AA";
  full  = "AA";
run;

proc print data = test1;
run;

我发现如果我更改变量的名称,但保持其他所有内容相同,则输入会在数据集和输出中正确显示。

data test2;
  length  one_byte   $ 1.
          two_bytes  $ 2.
          ;

  one_byte   = "AA";
  two_bytes  = "AA";

run;

proc print data = test2;
run;

以下是我的数据视图和结果窗口的屏幕截图。

data set views results

2 个答案:

答案 0 :(得分:1)

数据视图中的字段宽度似乎不会根据观察值自动调整。请注意"完整"长度略小于" AA"因此,字段宽度会切断第二个" A"。将字段标题拖过,然后删除'字符出现。

"full" is shorter than "AA" I hate SAS so much

答案 1 :(得分:1)

正如您所指出的,ViewTable中的列不会自动调整大小以显示变量的全部内容。

另一种方法是使用“表格视图” - 可在顶部的工具栏中找到:

form view in sas explorer

这可以分配给快捷键,例如如下:

dm "keydef F4 'viewtable &syslast view=form'";

另一种方法(如果使用早于9.4的基本SAS版本)将使用FS View(信用杰伊史蒂文斯) - 例如:

dm "fsv sashelp.class";

enter image description here

有关可用的显示管理器快捷方式的更多信息here