在其他编程语言中,有各种各样的数据类型,但是总体上,可大致分为:数值型,字符型和日期型,而SAS中的数据类型,只有2中数据类型: 字符型和数值型 。在这里,你会发现,日期型的去哪了?在SAS程序中,日期默认是作为数值型的,所有的日期类型的变量都会被作为输入日期与1960年1月1日之差。例如今天是20191208,它显示的就是21891(这个数字哪来的,你猜猜?),如果你想显示成日期型,那么你得设定相应的日期格式。这个怎么个相应的日期格式,就是咱们下面讲的格式化。

SAS变量的输入格式

输入格式: input 变量1 输入格式1 变量2 输入格式2 ...;

1.数值型的输入格式

数值型的数据格式主要是w.d。其中w表示数值的总位数或者说宽度(包括小数点),d表示数值的小数部分的位数,如6.2表示:数据宽度是6,2位小数点,整数位是4。2. 表示总位数是2,没有小数点。

由左边图显示:咱们输入性别代码,1和2,理论上应该都是整数,但是你加了小数位数,有2位小数,但是实际上没有,SAS会把自己默认降为小数,并且满足2位小数的宽度。你看这就和你想要的数据不一样了

所以,在做程序设计的时候,一定要设置好,数据格式。

练一练:看看下面的例子,看看是否跟你想象中要展示的数据是否一样?

2.字符串输入格式

字符串变量的输入格式是$ w. 其中$符号是必须加的,w表示字节数,一个中文占2个字节,SAS的默认宽度是8,如果超过8位,需要加上宽度值,以保证能够全部读上,否则就只会读8位,多余的截掉,以下示例:

看到无论是数值型,还是字符型,貌似宽度后面都有.,这个“.”,是必须加的,只要有宽度值,就必须加".",否则,让你看一下结果:

3.日期型输入格式

日期型输入格式有很多,下面列表展示了几种输入格式,其中w是表示日期的宽度,注意:这个宽度不能超过32

格式 范围 示例 输入格式
YYMMDDw. 6~32 20191208 YYMMDD8.
2019/12/08 YYMMDD10.
MMDDYYw. 6~32 120819 MMDDYY6.
12082019 MMDDYY8.
DDMMYYw. 6~32 081219 DDMMYY6.
08122019 DDMMYY8.
DATEw. 7~32 08DEC19 DATE7.
08DEC2019 DATE9.
MONYY7. 5~32 DEC19 MONYY5.
DEC2019 MONYY7.

补充:特殊输入符:     ":"  和 "&"

1.冒号(:)的作用

先看下面的例子

这个结果怎么跟我想象中的不太一样,在SAS程序中,默认情况下:每个变量之间,不是有空格隔开了吗?我这也隔开了,怎么显示的数据这样?

曰: SAS的默认,是默认不指定宽度,如果你指定了宽度,那么SAS就再也不是以默认的空格作为变量区分的标志了,而是按照指定的宽度来识别变量 ,例如:你对city这个变量指定了18,那么程序就会从头开始读取,直到18位结束才认为city的值,不管中间读到了什么,它都认为是city的值。这个时候冒号的作用就出来了, 你在变量和输入格式之间加一个冒号,这个冒号就会告诉SAS,读取下一个变量,要么遇到空格,要么变量的宽度读完了 ,现在咱们再改一下这个程序,看看结果

2.&的作用

请先看一个示例:

友友们,可以看一下,如果咱们的数据有空格怎么办?在SAS程序中,一般空格时默认隔开的,但是实际的数据中,我们又想让它显示空格,这个时候,咱们需要&符号来救场, &符号可以处理空格,并且两个变量之间,必须用双空格,因为变量中有空格,所以现在一个空格无法识别是变量中的,还是默认分割符,所以这个时候需要用2个空格来作为默认分隔符 ,否则,可能会出现意想不到的结果,如果你想见识,可以多尝试一下,看看结果。

OK,到这一步,已经把输入格式化梳理完了,其实,简单来说,输入格式化,就是让SAS程序来按照这种格式去读数据,现在我们说一下输出格式化,输出嘛,非常简单,就是展示给别人看的。

SAS变量的输出格式化

输出格式使用format语句来定义的.在input format 变量1 格式1 变量2 格式2  ...

数值型的输出格式

数值型的输出格式有很多,其实,大体可分为三种:w.d、commaw.d和percentw.d

w.d的含义与输入格式中的w.d一样,commaw.d的作用是将数字的整数部分自右向左 每三位用逗号隔开,就是excel表格中千分位展示的那种类型。percentw.d的作用是将数据显示百分比的形式,它自动将变量乘以100,并加上%,看下面的一个示例:

由以上解释:

整型:sqnum这个是整型,宽度是5,实际数据都是3,所以都能完全展示

千分位:amt 宽度是7,小数点1位,千分位展示,可以看10000和15000,在amt中,数字加小数点的位数都已经7位了,所以千分位的逗号都没有展示出来,9000,长度短,所以千分位展示,可以比对amt1,所以如果要设定千分位展示时,想要把逗号都展示出来,必须考虑逗号,否则,可能还是按照原格式展示的

百分号:在rate的结果中,可以看出,%占了3个字节,长度不够时,会舍去数字,它跟千分位commaw.d不一样,千分位长度不够时,会舍去逗号,这两个要注意。

字符型输出格式

对于字符串变量来说,只要把变量正确的读取进来,则会一模一样的显示出来,所以在字符型中,无须设定输出格式。如果不设定的话,SAS的默认字符串长度是8.

日期型输出格式

日期型的输出格式和输入格式是一样的,不过输出格式可以在宽度值前面家伙是哪个一个字母,以区分各种显示形式。如下图所示:

字母 输出格式 显示
s(/) YYMMDDs8. 19/12/08
d(-) YYMMDDd8. 19-12-08
p(.) YYMMDDp8. 19.12.08
c(:) YYMMDDc8. 19:12:08
b(空格) YYMMDDb8. 19 12 08
n(无) YYMMDDn8. 20191208

在了解到输入格式和输出格式之后,有人会说,这两者在展示上,是一样的,那它们是不是一样的?在这里,我想说:它们实际上是不一样的,输入格式会改变变量的本身值,但是输出不会改变变量本身的值。请看下面的示例:

x设定了输出格式,长度是2,所以展示是2,但是它实际值不变,让它赋给c,所以c的值是zxy, 而y设定了输入格式,长度2,所以展示y的时候,输出也是2,把它赋给d,所以d也是2,即zx

数据类型在其他编程语言中,有各种各样的数据类型,但是总体上,可大致分为:数值型,字符型和日期型,而SAS中的数据类型,只有2中数据类型:字符型和数值型。在这里,你会发现,日期型的去哪了?在SAS程序中,日期默认是作为数值型的,所有的日期类型的变量都会被作为输入日期与1960年1月1日之差。例如今天是20191208,它显示的就是21891(这个数字哪来的,你猜猜?),如果你想显示成日期型,那么... SAS 数据步的建立离不开input语句,在读入外部数据或cards语句后面的数据块时需要通过input语句定义 变量 。下面介绍input语句定义 变量 的四种方法: SAS 变量 分为字符型和数值型,字符型 变量 加 $ 符号。    (本文为博主原创,转载必须标明出处:http://www.cnblogs.com/small... %let NumSamples = 5; /* number of bagging resamples */ /* 2. Generate many bootstrap samples */ proc surveyselect data=credit_... 例如:在 输入 性别时, 输入 1,2,通过自定义格式 SAS 可以自动读成男和女 proc format; invalue<$> 格式名 变量 值或范围1= 输入 格式1 变量 值或范围2= 输入 格式2......; value<$> 格式名 变量 值或范围1= 输出 格式1 变量 值或范围2= 输出 格式2......; picture 模板名 <数值范围>; value中“ 输入 格式1”是字符型要$, invalue中“ 变量 值或者范围”是字符型要 $ DATA Map.engeldat;/*设置数据名称*/ LENGTH location_name $ 33;/*设置该 变量 的字符长度*/ INFILE "C:\Users\Administrator\Desktop\GBD2019.csv" DLM="," ;/*文件路径,csv文件用逗号分隔*/ /*列出 变量 名*/ INPUT location_id location_name $ sex_id sex_name $ age_group_i SAS 输入 输出 的基本格式很简单: 输入 :INPUT 变量 1 输入 格式1 变量 2 输入 格式2……; 输出 :FORMAT 变量 1 输入 格式1 变量 2 输入 格式2……;  *中间需以空格间隔 输入 格式很简单,但是不同 变量 类型的 输入 格式是不同的 指定 输入 格式会改变 变量 的值,但是指定 输出 格式不会改变 变量 的值,只是改变他们显示的样子 数值型 变量 输入 格式
1)例如想让结果展示为23.45%,这里%是占3个字符的,因此y=put(x,percent8.2) 2)例如*.txt文件中的内容为 102012/12/09 outdoor 15% 982101/01/01 golf           7% 901207/02/01 clothes 25% 103009/22/07 shoes     7% 这里要展示为两位小数的结果,则应该
1、 SAS 安装 SAS 的安装比较麻烦,因为网上比较难找到破解版,我花了很大功夫才找到的链接,现在也分享给大家:http://pan.baidu.com/s/1qYHTbkS,链接里有安装教程及安装包,按照上面的教程一步步进行就可以成功安装了。 2、 SAS 语言的基本概念及举例