SAS 提供了许多不同的数据输入方式,这取决于您想要做什么。
列 input,这是你开始的,当这是真的时是合适的:
要使用列输入读取,数据值必须具有以下属性:
- 出现在所有输入数据记录的相同列中
- 由标准数字形式或字符形式组成
visit_date
您的数据在列中不符合此要求。所以,你需要使用别的东西。
当您需要以下功能时,适合使用格式化输入:
对于格式化输入,变量名称后面的信息定义了 SAS 如何读取该变量的值。信息提供输入值的数据类型和字段宽度。Informats 还读取以非标准格式存储的数据,例如压缩十进制或包含逗号等特殊字符的数字。
您的visit_date
列符合此要求,因为您有一个特定的信息 ( mmddyy10.
),您想使用它来将数据读入日期格式。
在某些情况下,列表输入也可以工作,特别是在修改后的列表格式中,尽管在您的示例中它当然不会因为名称中的空格。这是您可能想要使用它的时候:
列表输入要求您在 INPUT 语句中指定变量名称,其顺序与字段在输入数据记录中出现的顺序相同。SAS 扫描数据线以定位下一个值,但忽略其他中间空白。列表输入不要求数据位于特定列中。但是,除非更改了值之间的分隔符,否则您必须将每个值与下一个值隔开至少一个空格。默认情况下,数据值的分隔符是一个空格或输入记录的结尾。列表输入不会跳过任何数据值来读取后续值,但它可以忽略数据记录中给定点之后的所有值。但是,指针控件使您能够更改读取数据值的顺序。
(为了完整起见,还有 Named input,尽管这种情况比较少见,在这里也没有帮助。)
您可以混合使用 Column 和 Formatted 输入,但您不想混合 List 输入,因为它没有完全相同的指针控制概念,因此很容易得到您不想要的东西。一般来说,您应该使用适合您的数据的输入类型 - 如果您的数据都是文本/常规数字,则使用列输入,如果您的数据具有特定格式,则使用格式化输入。