问:SAS列输入截断

时间:2017-02-26 20:43:36

标签: sas

我正在介绍SAS课程,并且在读取一些数据方面遇到了严重问题。

这是我到目前为止的代码(赋值告诉我们使用Column输入)如下:

DATA shirtCol;
    INPUT Name $ 1-6 Color $ 8-13 Price 15-19 ShippingCost 21-24;
    DATALINES;
    Large  Red    18.97 0.25
    Medium Blue   24.68 1.10
    XLarge Black  29.99 1.75
    Small  Orange 15.89 0.50
    ;
RUN;

PROC print data=shirtCol;
RUN;

我正在使用SAS大学版来运行此代码,当我运行程序时,Price和Shipping列只在小数点后面有一个数字。有什么我做错了吗?如何使程序不再截断我的输出?

2 个答案:

答案 0 :(得分:0)

似乎SAS工作室将空白空间计为列。尝试在输入前删除前导空格:

DATA shirtCol;
    INPUT Name $ 1-6 Color $ 8-13 Price 15-19 ShippingCost 21-24;
    DATALINES;
Large  Red    18.97 0.25
Medium Blue   24.68 1.10
XLarge Black  29.99 1.75
Small  Orange 15.89 0.50
;
RUN;

答案 1 :(得分:0)

计算数据行中的字符数,以查看为什么它没有读取您想要的内容。要么更正INPUT语句中的列号,要么删除您似乎添加到每行的额外空格。插入标尺线可以提供帮助。

DATA shirtCol;
    INPUT Name $ 1-6 Color $ 8-13 Price 15-19 ShippingCost 21-24;
*---+---10----+---20----+---30;
    DATALINES;
    Large  Red    18.97 0.25
    Medium Blue   24.68 1.10
    XLarge Black  29.99 1.75
    Small  Orange 15.89 0.50
    ;
RUN;

使用一致的缩进样式可以避免此类问题。我从未缩进DATALINES;声明。实际上我从不使用DATALINES;语句,但我从不缩进CARDS;语句并且我经常使用它们。 :)

如果这不起作用,请确保您没有引入标签来替换数据中的空格。我认为SAS / Studio可能无法将选项卡实际存储在它发送给SAS执行的代码行中。您可以使用EXPANDTABS选项添加INFILE语句,以使SAS将选项卡扩展为空格。当你在它时,你可能还想添加TRUNCOVER选项。

infile datalines expandtabs truncover ;