Regression 将数据文件读入SAS

Regression 将数据文件读入SAS,regression,sas,Regression,Sas,我有一个试图导入SAS的数据文件,该文件如下所示: WCM2B W C M 2 B M.B 2 18.4 12.3 g WCM2B W C M 2 B M.B 2 19.2 12.3 g WCM2B W C M 2 B S.P 2 19.5 DQ ('') WCM2B W C M 2 B Z.G 2 17.7 10.7 g WCM2B

我有一个试图导入SAS的数据文件,该文件如下所示:

WCM2B   W   C   M   2   B   M.B 2   18.4    12.3    g
WCM2B   W   C   M   2   B   M.B 2   19.2    12.3    g
WCM2B   W   C   M   2   B   S.P 2   19.5    DQ     ('')
WCM2B   W   C   M   2   B   Z.G 2   17.7    10.7    g
WCM2B   W   C   M   2   B   Z.G 2   18.4    10.7    g
WCM2B   W   C   M   2   B   Z.G 2   17.6    10.8    g
WCM2B   W   C   M   2   B   Z.G 2   20.1    12.1    g
这些列中的每一列都有标题,其中有些列列出了分类变量,有些列则没有

我的问题是:

1) 要确保这样一个文本文件在SAS中正确格式化,正确的代码是什么?然后如何对这些数据执行操作,使其出现在输出窗口中?即使是在某些选定的填充物上执行最基本的程序也可以。理想情况下,如果有人感到非常慷慨,我会试图了解如何进行回归分析,包括分析残差和标准统计数据

2) 我是否需要将分类变量更改为二进制,以便it正确分析数据

3) 我丢失的这些数据是否还有其他问题可能使其无法工作


非常感谢您抽出时间。

只处理如何读取外部文件

假设您有一个与描述完全相同的文件(在第一个记录和字段中包含一个标题行,以空格分隔),您可以使用
PROC IMPORT
将其读入SAS数据集中:

proc import out=want
     datafile='c:\temp\tempdata.txt'
     dbms=dlm;
     getnames=yes;
     delimiter = ' ';
run;
对于这样的分隔文件,SAS使用名为外部文件接口的工具来检查文件并生成常规数据步骤代码以读取文件。如果查看SAS日志,您将看到生成的实际代码(一条infle语句、一组数据定义语句和一条input语句)。您可以使用该代码作为示例,根据需要优化输入

请注意,SAS只有两种数据类型(字符和数字)。“分类”和“二进制”等分类是用法问题,不是正式数据定义的一部分。但是,某些其他SAS工具(如Enterprise Miner)确实允许您添加这样的属性

要获得写入输出窗口的数据集内容的简单列表,只需运行simple
PROC PRINT

proc print data=want;
   title 'This is my data';
run;

关于如何在这样的数据集上进行线性回归之类的问题可能超出了StackOverflow的目的。文档中有大量的信息和示例。在您的情况下,从阅读《SAS概念》一书开始,然后阅读《SAS/STAT程序指南》中的
PROC REG
。到主SAS文档。

我没有可用的SAS来测试此代码。让我知道进展如何

proc format;
    invalue v10fmt "DQ"  = .
                   other = _same_;
run;

data dsname;
    informat v10 v10fmt.;
    length v1 $5. v2 v3 v4 v6 $1. v7 $3. v11 $1.;
    infile "//file/location/and/name" firstobs = 2 delimiter = "09"x;
    input v1-v11;
run;

如果您有一个制表符分隔的数据文件,您可以考虑至少在一开始使用PROC导入。

proc import file="//wherever/myfile.txt" out=mydataset dbms=tab replace;
run;
这将生成一个数据集。它还将有用地将输入代码放入日志中。您可以将其从日志复制到程序编辑器中,然后在导入过程做出错误决定时进行修改(例如,它可能会决定带有“DQ”的列应为字符变量)。您可以将其调整为数字,然后重新运行粘贴的代码

现在,您可以对该数据集执行任何操作。你可以这样做

proc freq data=mydataset; 
run;

你剩下的问题实际上是一般性的研究问题,如果你不了解你的分析,也没有足够的时间来写答案,这些问题就很难回答:)我建议你在网上阅读一些关于数据分析的内容;这些并不是SAS特有的问题,而是一般性的研究指南,关于这些主题有很多论文。

我尝试了这个方法,但收到了一个关于分隔符的错误49。此外,我尝试使用proc print,但输出窗口中没有显示任何内容。我以上述两种方式运行代码:1)同时执行数据步骤和过程步骤2)分别提交第一个代码块和第二个代码块。为什么会这样?谢谢你的详细回复。现在写下表时,分隔符似乎是制表符,而不是空格。是这样吗?第3行第10列中的“DQ”代表什么?第3行第11列中的“(“”)”是否表示空格?关于选项卡,您可能是正确的。DQ应该变成“.”,据我所知,SAS喜欢用它来表示无数据。DQ不是数据。这里的每一列都有一个我没有输入的标题,所以又少了一个非数据行。我理解这意味着我需要将firstobs=2,对吗?除非这个问题更加强调统计部分(问题1和问题2的结尾),否则它将被关闭并迁移到编程和软件相关问题的主题。Re Q2:不,您很少需要将分类变量更改为二进制形式,以便在SAS中使用它们。许多核心统计过程(例如proc summary)都支持使用class语句。有些,例如proc rank,需要一个by语句,这意味着您需要首先对数据集进行排序。