首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SAS加载文件txt

SAS加载文件txt
EN

Stack Overflow用户
提问于 2012-12-18 01:10:00
回答 3查看 192关注 0票数 0

你能帮帮我吗??

我有一个txt文件:

代码语言:javascript
运行
复制
1 1 8 2 004 149 44.9 Brabant
14 7 7 9 9
32 10 13.5 165 20 7 21 19.9 7
1 1 9 2 004 133 32.5 Liege
12 7 6 11 8
14 18 20.9 140 22.9 18 15 4.4 5

在分析的前三行中,相同的ID和分析的变量是:

代码语言:javascript
运行
复制
anne, sex, nat, age, prov, tai, pds, ptr, pbi, pss, psi, pmo, dyn, efl, fp, 
slo, cna, flt, rsa, sbf, ll.

如何在SAS中加载文件并给出行和列的名称?

非常感谢和抱歉!elisa

EN

回答 3

Stack Overflow用户

发布于 2012-12-18 03:57:08

听起来您的输入文件中有三行数据对应于一个观察值;我按照您的意图重新设置了原始问题的格式。

如果这是真的,那么您只需要在一条INPUT语句中读取所有三行,并使用/运算符跳到下一行。换句话说,试试这个:

代码语言:javascript
运行
复制
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个字符。

例如:

代码语言:javascript
运行
复制
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选项。还要注意,本例并未读取您提供的示例数据中的所有数据;我发明了一个新变量。

要记住的重要一点是,按照变量在源文件中出现的正确顺序读取它们。

票数 1
EN

Stack Overflow用户

发布于 2012-12-19 01:00:34

代码语言:javascript
运行
复制
data STAT2012.data2004; 
    infile 'C:\Users\acer\STAT2012\data2004.txt' dlm=' ';
    input 
          anne 1-4  sex $6   nat $8  age 10 prov @$11-21 tai @23  pds @25
        / ptr 1-2 pbi 4 pss 6 psi 8 pmo 10
        /dyn 1-2 efl 4-5 fp 7-10 slo 12-14 cna 16-17 flt 19 rsa 21-22 sbf 24-27 ll 29;
run;
票数 0
EN

Stack Overflow用户

发布于 2015-03-06 00:51:46

我猜问题可能不仅仅是位置名称中的单词。您可以通过以下方式来克服(假设最长名称不超过200个字符):

代码语言:javascript
运行
复制
data data2004; 
  infile 'C:\Users\acer\STAT2012\data2004.txt' truncover;
  input ID
    anne sex nat $ age prov tai pds $200.;
  input ptr pbi pss psi pmo ;
  input dyn efl fp slo cna flt rsa sbf ll;
run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13918697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档