列表输入中的波浪号、dlm 和冒号格式修饰符
tilde, dlm and colon format modifier in list input
我想澄清三个概念。 :(colon format modifier)
、~(tilde)
和 dlm=
data scores;
infile datalines dsd;
input name : . score1-score3 team ~ . 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 : ~ .
?
其次,为什么sas可以自动识别,
是分隔符而不是"
或blank
?
- 需要冒号运算符
告诉 SAS 使用提供的信息,但 在遇到定界符时停止读取此变量的值 。不要忘记冒号,因为没有它们,SAS 可能会读取分隔符以满足信息格式中指定的宽度。
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000144370.htm
~
波浪号必须
以特殊方式处理字符值中的单引号、双引号和定界符。此格式修饰符 将带引号的字符值中的分隔符读取为字符而不是分隔符,并在将值写入变量时保留引号。
为什么需要这个,因为SAS为它自己的功能保留了某些分隔符即单引号,双引号用于表示字符串,当你希望SAS处理这些引号不同,您必须使用 - Tilde (~
)
明确告诉 SAS
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000144370.htm
SAS 只能自动识别单个 blank
作为分隔符,它不能自动识别 ,
,因为 delimiter.You 必须明确告诉 SAS。在您的情况下,您使用了选项 dsd
,它为您做了三件事。
(i)
默认情况下,它会自动将 ,
作为分隔符。如果你想提供任何其他分隔符,你必须专门告诉 SAS 然后使用 dlm=
选项。
(ii)
SAS 将两个连续的分隔符视为缺失值并从字符值
中删除引号
(iii)指定当数据值用引号括起来时,值内的分隔符被视为字符数据
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000146932.htm
我想澄清三个概念。 :(colon format modifier)
、~(tilde)
和 dlm=
data scores;
infile datalines dsd;
input name : . score1-score3 team ~ . 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 : ~ .
?
其次,为什么sas可以自动识别,
是分隔符而不是"
或blank
?
- 需要冒号运算符 告诉 SAS 使用提供的信息,但 在遇到定界符时停止读取此变量的值 。不要忘记冒号,因为没有它们,SAS 可能会读取分隔符以满足信息格式中指定的宽度。
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000144370.htm
~
波浪号必须 以特殊方式处理字符值中的单引号、双引号和定界符。此格式修饰符 将带引号的字符值中的分隔符读取为字符而不是分隔符,并在将值写入变量时保留引号。
为什么需要这个,因为SAS为它自己的功能保留了某些分隔符即单引号,双引号用于表示字符串,当你希望SAS处理这些引号不同,您必须使用 - Tilde (~
)
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000144370.htm
SAS 只能自动识别单个
blank
作为分隔符,它不能自动识别,
,因为 delimiter.You 必须明确告诉 SAS。在您的情况下,您使用了选项dsd
,它为您做了三件事。(i) 默认情况下,它会自动将
,
作为分隔符。如果你想提供任何其他分隔符,你必须专门告诉 SAS 然后使用dlm=
选项。(ii) SAS 将两个连续的分隔符视为缺失值并从字符值
中删除引号
(iii)指定当数据值用引号括起来时,值内的分隔符被视为字符数据
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000146932.htm