全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3074 6
2010-06-05
proc format;
value pdfmt
low-0    = 'A. 0                  '
0<-1     = 'B. <1yr              '
1<-3     = 'C. 1-<3 years      '
3<-5     = 'D. 3-<5 years      '
5<-10   = 'E. 5-<10 years     '
10-high = 'F. 10 years+        ';
run;

gp_job_period = put(job_period, pdfmt.);

proc freq data=lib.data;table gp_job_period;run;
                                                      累积       累积
                               gp_living_period            频数      百分比       频数      百分比
                               -------------------------------------------------------------------
                                                    .        1742      0.04         1742      0.04
                               A. 0                       3848605     91.69      3850347     91.73
                               B. <1yr                      39981      0.95      3890328     92.69
                               C. 1-<3 years                91799      2.19      3982127     94.87
                               D. 3-<5 years                57299      1.37      4039426     96.24
                               E. 5-<10 years               80058      1.91      4119484     98.15
                               F. 10 years+                 77791      1.85      4197275    100.00
                                                         频数缺失 = 1816

为什么出现了“. ”和频数缺失呢?谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-6-5 20:43:21
1# bluemoon1

SORRY.不知道为什么。如果只是要用在freq里,也许可以考虑
复制代码
无须设置新变量
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-5 21:20:12
format确实存在这个问题,我以前做ETL的时候就遇到过。你可以在Proc format 的value中再加一个关键字other,即:
proc format;
value ... ;
...;
other=..;
run;

试一试,有问题再反馈,我临时想的,没有测试。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-5 23:01:37
bluemoon1 发表于 2010-6-5 19:58

The following program illustrates when the missing from.

proc format;
value pdfmt
low-0    = 'A. 0                  '
0
4    proc format;
5    value pdfmt
6    low-0    = 'A. 0                  '
7    0<-1     = 'B. <1yr              '
8    1<-3     = 'C. 1-<3 years      '
9    3<-5     = 'D. 3-<5 years      '
10   5<-10   = 'E. 5-<10 years     '
11   10-high = 'F. 10 years+        ';
NOTE: Format PDFMT has been output.
12   run;

NOTE: PROCEDURE FORMAT used (Total process time):
      real time           0.28 seconds
      cpu time            0.03 seconds


13
14   data t1;
15      do i=.a,.z,.,-100,0 to 12;
16      put i = i= pdfmt.;
17     end;
18   run;

i=A i=A
i=Z i=Z
i=. i=.
i=-100 i=A. 0
i=0 i=A. 0
i=1 i=B. <1yr
i=2 i=C. 1-<3 years
i=3 i=C. 1-<3 years
i=4 i=D. 3-<5 years
i=5 i=D. 3-<5 years
i=6 i=E. 5-<10 years
i=7 i=E. 5-<10 years
i=8 i=E. 5-<10 years
i=9 i=E. 5-<10 years
i=10 i=E. 5-<10 years
i=11 i=F. 10 years+
i=12 i=F. 10 years+
NOTE: The data set WORK.T1 has 1 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.29 seconds
      cpu time            0.01 seconds
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-7 08:49:26
gp_living_period            频数      百分比       频数      百分比
  -------------------------------------------------------------------

这里的gp_living_period 和gp_job_period是什么关系?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-7 08:58:05
如果只是用 gp_job_period = put(job_period, pdfmt.);  个人认为不应该同时出现“. ”和频数缺失。

如果用到了 options missing=" "; 则不会有“.”这一行;
如果没用到options missing=" "; 则缺失值在put函数之后对应的变量gp_job_period会是“    .”,这样就不会有频数缺失了。

如果数据中有 .a, .z 之类的特殊缺失值,那么输出里面也不会是“.”, 而是 "A", "Z".
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群