SAS冒号格式修改器

SAS冒号格式修改器,sas,formatting,modifier,Sas,Formatting,Modifier,灰色框中的数字代表什么?理解冒号修饰符如何影响sas读取值的简单方法是什么 答案取决于未提供的信息。答案B是最好的选择,因为在输入语句中使用信息时应该使用冒号修饰符,以防止使用格式化输入模式而不是列表输入模式。否则,格式化输入可能会读取太多或太少的字符,并且可能会将光标留在错误的位置以读取下一个字段 但如果你试着从在线卡中读取数据,这两行就可以了。这是因为在线数据行被填充到下一个80字节的倍数 如果将这些行放入一个文件中,但行上没有任何尾随空格,则第二行将失败,因为最后一个字段没有10个字符可读


灰色框中的数字代表什么?理解冒号修饰符如何影响sas读取值的简单方法是什么

答案取决于未提供的信息。答案B是最好的选择,因为在输入语句中使用信息时应该使用冒号修饰符,以防止使用格式化输入模式而不是列表输入模式。否则,格式化输入可能会读取太多或太少的字符,并且可能会将光标留在错误的位置以读取下一个字段

但如果你试着从在线卡中读取数据,这两行就可以了。这是因为在线数据行被填充到下一个80字节的倍数

如果将这些行放入一个文件中,但行上没有任何尾随空格,则第二行将失败,因为最后一个字段没有10个字符可读取。但是,如果将TRUNCOVER选项(或PAD)添加到infle语句中,则它将起作用

你自己试试看。TEST1和TEST3工作正常。TEST2得到一张丢失的卡片便笺

data test1;
  input name $ hired date9. age state $ salary comma10.;
  format hired date9.;
cards;
Donny 5MAR2008 25 FL $43,123.50
Margaret 20FEB2008 43 NC 65,150
;

options parmcards=test;
filename test temp ;
parmcards;
Donny 5MAR2008 25 FL $43,123.50
Margaret 20FEB2008 43 NC 65,150
;

data test2;
  infile test;
  input name $ hired date9. age state $ salary comma10.;
  format hired date9.;
run;

data test3;
  infile test truncover;
  input name $ hired date9. age state $ salary comma10.;
  format hired date9.;
run;
对于不同的数据,第一个格式化的输入也会导致问题。例如,如果日期值在年份中只使用了2位数字,则会导致错误。所以它试着把FL读作年龄,然后把薪水的前8个字符读作状态,把空格读作薪水

data test1;
  input name $ hired date9. age state $ salary comma10.;
  format hired date9.;
cards;
Donny 5MAR08 25 FL $43,123.50
Margaret 20FEB2008 43 NC 65,150
;
结果:

Obs    name            hired    age    state       salary

 1     Donny       05MAR2008      .    $43,123.         .
 2     Margaret    20FEB2008     43    NC           65150

灰色框中的数字仅用于帮助您计数字符,它按5计数字符,以帮助您在需要时找到长度/位置。1、5、10、15、20、25、30、35个字符。啊,太简单了,谢谢。我把它读成1,1,2,2,3,3,1,5,0等等谢谢!所以,如果我要使用infle导入,我可以使用truncover选项,而不是使用冒号修饰符?如果我在使用cards函数,有没有必要使用冒号修饰符,因为有填充?TRUNOVER实际上只是处理读取粘贴到行尾的问题。但是在中间行的格式化输入也会导致问题,但这个小例子并不适用。如果租用日期值在年份中只有两位数字,则会导致问题。有时,人们喜欢跳过实际定义字符变量的长度,并在输入语句中使用informat来提示SAS如何定义变量。没有冒号,可以直接读取行中值之间的分隔符并使输入不同步。我想我现在已经找到了。谢谢!我尝试使用带冒号和不带冒号的信息(在使用卡片的测试数据上),并注意到SAS不知道在哪里将观察结果分成正确的列,除非我在变量和信息之间添加冒号。