1

我需要从 csv 文件导入数据。我可以阅读除日期以外的所有内容。日期格式类似于 dd.m.yyyy 格式:6;Tiku;17.1.1967;M;191;

我猜我是否需要指定一个信息来读取它?我不知道该使用哪一个,因为我尝试过的任何方法都不起作用。

到目前为止我所管理的:

data [insert name here];
  infile [insert name here];
  dlm=";" missover;
  length Avain 8 Nimi $10 Syntymapaiva 8 Sukupuoli $1 Pituus 8 Paino 5;
  input 
    Avain Nimi $ Syntymapaiva ddmmyyp.(=this doesnt work) Sukupuoli$ Pituus                 
  Paino;
  format  Paino COMMA5.2 ;
  label Syntymapaiva="Syntymäpäivä";
run;

以及要读入的实际文件的一部分:

 6;Tiku;17.1.1967;M;191;

谢谢你帮助这个笨蛋!

4

2 回答 2

1

您可以使用该anydtdte信息,但是(正如@Tom指出的那样)如果您的数据已知以这种格式固定,那么ddmmyy.会更好。此外,Tom 关于使用:修饰符的建议是正确的,并且最好在大多数(如果不是全部)情况下使用。

data want;
  infile cards dlm=";" missover;
  input Avain Nimi:$10. Syntymapaiva:ddmmyy. Sukupuoli:$1. Pituus Paino;
  format  Paino COMMA5.2 Syntymapaiva date9.;
  label Syntymapaiva="Syntymäpäivä";
datalines4;
6;Tiku;17.1.1967;M;191;
;;;;
run;

这使:

在此处输入图像描述

于 2018-07-06T08:26:21.720 回答
1

没有名为的信息DDMMYYP.。请改用该信息DDMMYY.

还要确保:在 INPUT 语句中包含的信息规范之前使用修饰符,以便您仍然使用列表模式输入而不是格式化输入。如果您使用格式化输入而不是列表模式输入,那么 SAS 可以读取分隔符。

input Avain Nimi Syntymapaiva :ddmmyy. Sukupuoli Pituus Paino;

也许你很困惑,因为有一个名为DDMMYYP.

格式用于将值转换为文本。当您想要将文本转换为值时,您需要使用信息格式。

553  options nofmterr ;
554  data _null_;
555    str='17.1.1967';
556    ddmmyy  = input(str,ddmmyy10.);
557    ddmmyyp = input(str,ddmmyyp10.);
                           ----------
                           485
NOTE 485-185: Informat DDMMYYP was not found or could not be loaded.

558    put str= (dd:) (= yymmdd10.);
559    _error_=0;
560  run;

NOTE: Invalid argument to function INPUT at line 557 column 13.
str=17.1.1967 ddmmyy=1967-01-17 ddmmyyp=.
NOTE: Mathematical operations could not be performed at the following places. The results of the operations have been set to
      missing values.
      Each place is given by: (Number of times) at (Line):(Column).
      1 at 557:13
于 2018-07-06T08:40:46.060 回答