ilovekate 发表于 2014-8-15 10:34 
能解释一下value和invalue,put 和input的区别吗? 总是把这个搞的很混乱。
不好意思,回复的有点晚了,input和put确实很容易弄混。 看下面的解释是否有帮助。
1. invalue 和value 只在proc format中使用。在 proc format 中
invalue 用来定义输入格式 (informat)
value 用来定义输出格式 ( format )。
2. input 是输入语句,即把数据读入到数据集里的语句,所以在input语句中要用输入格式(informat).
put 是输出语句,是把数据集里的数据输出到log里,或者写到外部文件中, 所以在put语句中要用输出格式(format).
3. 数据步中,只有用informat和format语句定义的输入,输出格式才会被储存在数据集中。
没有用informat和format定义而只在 input 语句中用到的格式是不会被存在数据集中的。
4. input 和 put 语句还可以在数据步(data step)中做变量类型的转换.
input 语句: 将字符型变量转成数值型变量 (character to numeric ).
put 语句: 将数值型变量转成字符型变量 ( numeric to character).
这一点很容易弄混。
也许看一下我们是怎么做一道简单的算术题会有帮助.
例如在网上登陆和下载时可能会被要求输入一个验证码或计算一道简单的算术题,比如你要回答3+4=?
在做这道题的时候,我们通过眼睛把倆个数字传送进大脑,在大脑中算出结果,然后把结果从大脑通过手输出到键盘或纸上。
在这个过程中,眼睛看到的实际上是倆个图形/符号,或者称为字符。
而进入大脑并参加运算的是两个数字,因为在大脑中我们并没有把两个数字的形状做任何方式迭加。这个过程就是input的过程, 即把字符型变量转成数值型便量的输入过程.
input 可以看成是两个字 in 和 put,in就是里面或进来的意思。
相反, 把在大脑中计算好的数字结果作为一个数字符号写在纸上或显示在计算机频幕上,就是一个put过程.
即把数字型变量转成字符型便量的输出过程.
而眼睛看到的字符之所以会在大脑中被转化成数字是因为我们通过大量的学习和训练已经把数字的形状做为一种格式牢牢的存在了大脑中. 所以当眼睛把看到的字符输送到大脑后,就会被自动的转化为数字.
当搞不清到底是用 input 还是用 put 时,想一想这个例子可能会有帮助。