提问人:Jim Nezamis 提问时间:3/7/2023 更新时间:3/7/2023 访问量:354
SAS数据集(看似)在设置其他数据时截断字符变量
SAS dataset (seemingly) truncating character variable when setting with another datas
问:
我使用 PROC IMPORT 从 Excel 电子表格创建一个数据集,并获取字符变量的值“3 esoph - 2 cardia”(除其他外,但这是显示问题的那个)。然后,此数据集与本机 SAS 数据集连接。串联后,该值在屏幕和打印输出中显示为“3 esoph”。但串联后,值为十六进制$hex格式的“332065736F7068202D203220636172646961”。这将解码为“3 esoph - 2 cardia”(手动解码)。在两个数据集中,变量的长度均为 $18。
关于为什么“- 2 cardia”不显示的任何想法?即使数据以十六进制形式存在,这部分值是否真的丢失了?
我预计合并后的值是“3 esoph - 2 cardia”,而不是“3 esoph”。
我尝试了 PROC SQL 来执行转换 (UNION ALL),但得到了相同的结果。
答:
1赞
Tom
3/7/2023
#1
从您的症状来看,您可能已经创建了一个变量,该变量的长度(LENGTH)比附加到它所显示的FORMAT更长。
对于普通字符变量,无需将任何格式附加到变量。因此,我建议从字符变量中删除格式,看看这是否使您的数据可用。
因此,例如,要连接数据集 ONE 和 TWO 以创建名为 WANT 的新数据集,可以使用如下数据步骤:
data want;
set one two;
format _character_ ;
run;
请注意,如果问题是变量的 LENGTH 太短,那么您将看到实际值的截断,而不仅仅是打印的结果,那么您可能需要在 SET 语句之前实际定义每个变量所需的长度。
data want;
length id 8 string1 $30 text2 $100 ;
set one two;
format _character_ ;
run;
评论