楼主: lnlhckao123
1086 8

[问答] 300论坛币求怎样把数据集中的数据重新分组 [推广有奖]

  • 0关注
  • 3粉丝

副教授

61%

还不是VIP/贵宾

-

威望
0
论坛币
14832 个
通用积分
9.1001
学术水平
7 点
热心指数
4 点
信用等级
4 点
经验
12566 点
帖子
754
精华
0
在线时间
399 小时
注册时间
2010-8-21
最后登录
2024-2-8

300论坛币
请问高手,怎样把数据集中的数据重新分组,我的数据aaa如下,现在我想建立一个新的数据集bbb,使数据集中的age有3个组别 a组、 b组、c组,其中a组包含aaa中的“1”与“2”, b组包含aaa中的“3”、“4”与“5”,c组包含aaa中的“6”,谢谢高手指点!

data aaa;
input age x;
cards;
1       3
1       3
1       2
1       5
2       4
2       6
2       7
2       6
3       9
3      10
3       4
3       6
4      12
4      14
4      10
4      13
5      13
5      16
5      17
5      20
6      23
6      22
6      30
6      26  
;
run;
proc means data=aaa;
var x;
class  age;
run;  

最佳答案

yongyitian 查看完整内容

data bbb; set aaa; if age in (1, 2) then Age_group='a'; if age in (3, 4, 5) then Age_group ='b'; if age = 6 then Age_group='c'; run; proc means data=bbb; var x; class age_group; run;
关键词:0论坛币 数据集 论坛币 means cards
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!
沙发
yongyitian 发表于 2013-4-29 21:48:07 |只看作者 |坛友微信交流群
data bbb;
    set aaa;
        if age in (1, 2) then Age_group='a';
        if age in (3, 4, 5) then Age_group ='b';
        if age = 6 then Age_group='c';
run;

proc means data=bbb;
var x;
class  age_group;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 3 + 3 + 5 热心帮助其他会员

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

使用道具

藤椅
pobel 在职认证  发表于 2013-4-29 22:14:38 |只看作者 |坛友微信交流群
data bbb;
    set aaa(rename=(age=age_old));
        if age_old in (1,2) then age="a";
        else if age_old in (3,4,5) then age="b";
        else if age_old=6 then age="c";
run;
和谐拯救危机

使用道具

板凳
黑白电视机 发表于 2013-4-29 22:15:04 |只看作者 |坛友微信交流群
楼主,这悬赏好高啊,虽然这样很简单,但我想应该符合你的要求!
data bbb;
input age$ x;
cards;
a        3
a        3
a        2
a        5
a        4
a        6
a        7
a        6
b        9
b        10
b        4
b        6
b        12
b        14
b        10
b        13
b        13
b        16
b        17
b        20
c        23
c        22
c        30
c        26
;
run;
proc means data=aaa;
var x;
class  age;
run;  
已有 1 人评分热心指数 收起 理由
lnlhckao123 + 2 热心帮助其他会员

总评分: 热心指数 + 2   查看全部评分

难得糊涂

使用道具

报纸
pobel 在职认证  发表于 2013-4-29 22:16:12 |只看作者 |坛友微信交流群

proc format;
   value agefmt   1,2="a"
                3,4,5="b"
                                    6="c";
run;

data bbb;
    set aaa(rename=(age=age_old));
    age=put(age_old,agefmt.);
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
lnlhckao123 + 5 + 3 + 2 热心帮助其他会员

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

和谐拯救危机

使用道具

地板
pobel 在职认证  发表于 2013-4-29 22:19:48 |只看作者 |坛友微信交流群
proc sql;
    create table bbb as
          select case
                   when age in (1,2) then "a"
               when age in (3,4,5) then "b"
               when age=6 then "c"
                           else ""
                           end as age, x
       from aaa;
quit;
和谐拯救危机

使用道具

7
lnlhckao123 发表于 2013-4-29 23:39:55 |只看作者 |坛友微信交流群
谢谢pobel!您写的可以运行,但是我sas程序基础差,我看yongyitian写的程序看的懂,您写的虽然结果是对的,但是我不好理解,所以我设yongyitian的答案为最佳答案,谢谢您!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

使用道具

8
zkymath 在职认证  发表于 2013-4-30 00:40:14 |只看作者 |坛友微信交流群
B多啊! 羡慕。。。
助人为快乐之本

使用道具

9
lnlhckao123 发表于 2013-4-30 23:41:06 |只看作者 |坛友微信交流群
谢谢黑白电视机,您写的程序针对我的具体例子是对的,可是我举得只是例子,其实我的记录有几万个,故您的答案这时候就无法满足我的要求,还是谢谢您的指点!
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-28 08:46