sas - 以两行结束并从不同位置开始读取 SAS
问题描述
我有两行观察要在 SAS 中阅读。它是一个逗号分隔的数据集。我的代码如下:
DATA SASweek1.industry;
INFILE "&Dirdata.Assignment1_Q6_data.txt" DLM="," DSD termstr=crlf TRUNCOVER;
LENGTH Company $ 15;
INPUT Company $ State $ Expense COMMA9. ;
FORMAT Expense DOLLAR9.;
*INFORMAT Expense DOLLAR10.;
RUN; * not ready;
原始数据集如下所示:
我可以很好地打印出第一行观察结果,但是最后一个“0”会到第二行的第一个位置,变成“0Lee's..”。任何建议将不胜感激!!
解决方案
它只是在做你告诉它做的事情。您告诉它准确读取 9 个字符。
通常,您不应使用带分隔数据的格式化输入模式。:
您可以通过在语句中的信息规范前面添加(冒号)前缀INPUT
或完全删除信息规范并使用INFORMAT
语句让 SAS 知道要使用的信息来防止这种情况。
但是您的数据未正确分隔,因为最后一个字段包含分隔符,但该值未包含在引号中。所以逗号使它看起来像两个值而不是一个。真正的解决方案是修复创建文件的进程以创建有效的分隔文件。它需要用逗号引用其中的值,或者从数字中删除逗号,或者使用数据中没有出现的分隔符。
幸运的是,因为它是该行的最后一个字段,您可以使用格式化输入来读取该字段。由于您使用的是该TRUNCOVER
选项,因此只需将 INPUT 语句中的信息宽度设置为最大值。
DATA SASweek1.industry;
INFILE "&Dirdata.Assignment1_Q6_data.txt" DLM="," DSD termstr=crlf TRUNCOVER;
LENGTH Company $15 State $15 Expense 8;
INPUT Company State Expense COMMA32. ;
FORMAT Expense DOLLAR9.;
RUN;
推荐阅读
- excel - 如果 Excel 中的一行缺少数据,则标记记录的多行
- java - 两个版本之间的 Android Studio 引用问题
- r - R中是否有组合名称的功能?
- mysql - MySQL 结果未定义
- c# - 将特定的 Run 添加到 Windows.UI.Xaml.Controls.TextBlock 后,如何以编程方式访问它?
- python - scikit learn train_test_split for loop
- laravel - Paypal 使用 Paypal API 与 laravel 6 集成
- r - 在 R 中为 gvlma 使用 Map 函数
- swift - 如何在我的 swift 项目中拥有 2 个同名文件?
- flutter - Flutter showModalBottomSheet 隐藏在 CupertinoTabBar 后面