听起来您的输入文件有三行数据用于一次观察;我按照您的意图重新格式化了您的原始问题。
INPUT
如果这是真的,您只需要在一个语句中阅读所有三行,使用/
运算符跳到下一行。换句话说,试试这个:
data STAT2012.data2004;
infile 'C:\Users\acer\STAT2012\data2004.txt';
input ID
anne sex nat $ age prov tai pds $
/ ptr pbi pss psi pmo
/ dyn efl fp slo cna flt rsa sbf ll;
run;
当然,您应该确保变量名称与您的文件匹配并且结果符合您的需要。我给你一个非常基本的例子只是为了让你开始。
更新: 我的示例基于您发布的示例数据。我假设第一列是一个 ID 变量,否则您的示例数据比您的示例具有更多的值。
在您的情况下,最好的方法是使用INFORMAT
语句来定义每个变量的读取方式。这将要求您了解每个变量的类型(字符或数字)以及每个字符变量的最大长度。对于数字变量,您可以只使用best32.
信息。如果你实在不知道字符变量的最大长度,你可以试试用$200.
,它会让每个变量长 200 个字符。
例如:
data STAT2012.data2004;
infile 'C:\Users\acer\STAT2012\data2004.txt';
/* Define the variables that will be read */
informat
/* First line, 8 variables */
anne best32.
sex $1.
nat $4.
age best32.
prov best32.
tai best32.
pds best32.
ptr $200. /* 8th field in your sample, apparently character */
/* Second line, 5 variables */
pbi best32.
pss best32.
psi best32.
pmo best32.
dyn best32.
/* Third line, 9 variables */
efl best32.
fp best32.
slo best32.
cna best32.
flt best32.
rsa best32.
sbf best32.
ll best32.
unkn best32.; /* an unknown variable I invented */
/* Input the variables in the order they appear in the file.*/
input anne sex nat age prov tai pds pdr
/ pbi pss psi pmo dyn
/ efl fp slo cna flt rsa sbf ll unkn;
run;
INFILE
请注意,您的报表中不需要 DLM 选项。另请注意,此示例并未读取您提供的示例数据中的所有数据;我发明了一个新变量。
重要的是要记住以正确的顺序读取变量,因为它们出现在源文件中。