当我将字符的可变长度设置为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;
以下是我的数据视图和结果窗口的屏幕截图。
答案 0 :(得分:1)
数据视图中的字段宽度似乎不会根据观察值自动调整。请注意"完整"长度略小于" AA"因此,字段宽度会切断第二个" A"。将字段标题拖过,然后删除'字符出现。
答案 1 :(得分:1)
正如您所指出的,ViewTable中的列不会自动调整大小以显示变量的全部内容。
另一种方法是使用“表格视图” - 可在顶部的工具栏中找到:
这可以分配给快捷键,例如如下:
dm "keydef F4 'viewtable &syslast view=form'";
另一种方法(如果使用早于9.4的基本SAS版本)将使用FS View(信用杰伊史蒂文斯) - 例如:
dm "fsv sashelp.class";
有关可用的显示管理器快捷方式的更多信息here。