如何在 SAS 中使用“输入”导入原始数据
Posted
技术标签:
【中文标题】如何在 SAS 中使用“输入”导入原始数据【英文标题】:How to import a raw data using "input" in SAS 【发布时间】:2022-01-15 09:18:59 【问题描述】:我想在 SAS 中使用“输入”导入原始数据。我的以下程序效果不佳。我怎么做?请给我一些建议。
data dt00;
infile datalines;
input Year School & $27. Enrolled : comma.;
datalines;
1868 U OF CALIFORNIA BERKELEY 31,612
1906 U OF CALIFORNIA DAVIS 21,838
1965 U OF CALIFORNIA IRVINE 15,874
1919 U OF CALIFORNIA LOS ANGELES 35,730
;
run;
【问题讨论】:
【参考方案1】:输入语句中的&
修饰符表示要在一行中查找两个或多个分隔符以标记该行中下一个“单词”的结尾。确保数据行实际上有额外的空间。还要确保在 INPUT 语句中的任何信息规范前面包含 :
修饰符。
data dt00;
input Year School & :$27. Enrolled : comma.;
datalines;
1868 U OF CALIFORNIA BERKELEY 31,612
1906 U OF CALIFORNIA DAVIS 21,838
1965 U OF CALIFORNIA IRVINE 15,874
1919 U OF CALIFORNIA LOS ANGELES 35,730
;
【讨论】:
【参考方案2】:datalines
默认以空格分隔。您可以在执行时指定特定的行长并进行额外的后处理清理,但最简单的做法是添加不同的分隔符并在您的 infile
语句中包含 dlm
选项。
data dt00;
infile datalines dlm='|';
length Year 8. School $27. Enrolled 8.;
input Year School$ Enrolled : comma.;
datalines;
1868|U OF CALIFORNIA BERKELEY|31,612
1906|U OF CALIFORNIA DAVIS|21,838
1965|U OF CALIFORNIA IRVINE|15,874
1919|U OF CALIFORNIA LOS ANGELES|35,730
;
run;
输出:
Year School Enrolled
1868 U OF CALIFORNIA BERKELEY 31612
1906 U OF CALIFORNIA DAVIS 21838
1965 U OF CALIFORNIA IRVINE 15874
1919 U OF CALIFORNIA LOS ANGELES 35730
SAS 在input
语句中有吨 选项,用于读取结构化和非结构化数据,但归根结底,尽可能以分隔格式获取它是最简单的。
【讨论】:
非常感谢,很有用。我明白了!以上是关于如何在 SAS 中使用“输入”导入原始数据的主要内容,如果未能解决你的问题,请参考以下文章