我想澄清3个概念。 :(colon format modifier)
,~(tilde)
和dlm=
data scores;
infile datalines dsd;
input name : $10. score1-score3 team ~ $25. div $;
datalines;
Smith,12,22,46,"Green Hornets, Atlanta",AAA
FriedmanLi,23,19,25,"High Volts, Portland",AAA
Jones,09,17,54,"Vulcans, Las Vegas",AA
;
run;
首先,在输入语句中使用:
可以完全取代length
语句?为什么我不需要:
作为团队变量......如team : ~ $25.
?
其次,为什么sas可以自动识别,
是分隔符但不是"
或blank
?
答案 0 :(得分:6)
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000144370.htm
~
需要Tilde
以特殊方式处理字符值中的单引号,双引号和分隔符。此格式修饰符将带引号的字符值中的分隔符读取为字符而不是分隔符,并在将值写入变量时保留引号。 为什么需要,因为SAS为其自身的功能保留了某些分隔符,即单引号,双引号用于表示字符串,当您希望SAS处理这些分隔符时引号不同,您必须使用 - Tilde(~
)
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000144370.htm
SAS只能自动识别单个blank
作为分隔符,并且无法自动将,
识别为分隔符。您必须明确告知SAS。在您的情况下,您使用了dsd
选项,它为您做了三件事。
(ⅰ)
默认情况下,它会自动将,
作为分隔符。如果您想提供任何其他分隔符,则必须使用dlm=
选项专门告知SAS。
(ⅱ) SAS将两个连续的分隔符视为缺失值,并从字符值中删除引号
(iii)指定当数据值用引号括起来时,该值内的分隔符将被视为字符数据
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000146932.htm