楼主: lnlhckao123
2202 16

[问答] 200论坛币请问sas程序重新分组问题 [推广有奖]

11
yongyitian 发表于 2013-5-12 23:37:09
data aaa2;
format age_group $4.;
    set aaa;
        if age =0 then Age_group="0 ";
        if age in (1) then Age_group="1 ";
        if age in (2) then Age_group ="2 ";
        if age in (3) then Age_group ="3 ";
            if age in (4) then Age_group ="4 ";
        if age in (5) then Age_group ="5 ";
        if age =6 then Age_group ="6 ";
        if age > 6 then Age_group=">6";
run;

12
lnlhckao123 发表于 2013-5-12 23:41:52
谢谢yongyitian!您终于上线了!谢谢您的信用!!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

13
lnlhckao123 发表于 2013-5-12 23:49:31
您好,yongyitian!我运行您上述程序后,log窗口会出现下列提示,是什么原因?望指点!


20303  data aaa2;
20304  format age_group $4.;
20305      set aaa;
ERROR: 变量 age_group 已定义为字符型和数值型。
20306          if age =0 then Age_group="0 ";
20307          if age in (1) then Age_group="1 ";
20308          if age in (2) then Age_group ="2 ";
20309          if age in (3) then Age_group ="3 ";
20310              if age in (4) then Age_group ="4 ";
20311          if age in (5) then Age_group ="5 ";
20312          if age =6 then Age_group ="6 ";
20313          if age > 6 then Age_group=">6";
20314  run;


在运行您的程序前,我的前一个运行的程序是

data aaa;
set bbb(obs=0 keep=cardno--age);
age_group=.;
set bbb(obs=0 keep=ca--zn2);
run;

proc append base=aaa  data=bbb;
run;


即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

14
yongyitian 发表于 2013-5-13 00:02:01
前一段程序中没有定义age_group的类型,但age_group=. 中的 .  表示给age_group 付了数值型 missing value.   所以age_group 是数值型变量.

后一段中 format 语句定义 age_group 为长度为4的字符型变量。 所以log显示age_group 有两种变量类型.

字符型变量的 missing value 用空格(null)表示, 既 ' ' .

/*  try this  */
data aaa;
format age_group $4.;     /*  or use length statement as: length age_group $4.;   */
set bbb(obs=0 keep=cardno--age);
age_group=' ';   / assign age_group a null value */
set bbb(obs=0 keep=ca--zn2);
run;

proc append base=aaa  data=bbb;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 4 + 4 + 4 热心帮助其他会员

总评分: 学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

15
lnlhckao123 发表于 2013-5-15 21:01:13
您好yongyitian!我想请问一下,我在data aaa 步中,在age后增加一个age-group,但当运行data aaa2 (不管用format还是用length)后age-group会变成第一个变量,这该怎样解决?谢谢指点!!!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

16
yongyitian 发表于 2013-5-15 22:24:10
lnlhckao123 发表于 2013-5-15 21:01
您好yongyitian!我想请问一下,我在data aaa 步中,在age后增加一个age-group,但当运行data aaa2 (不管用 ...
变量在数据集中的位置是编译时根据变量在程序中出现的先后决定的。
所以, 你的情况不能把 format or length 放在程序的前面。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 2 + 2 + 2 热心帮助其他会员

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

17
lnlhckao123 发表于 2013-5-15 22:32:03
谢谢yongyitian,您已经在我的另一个帖子中回答了我的问题!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 00:59