9338 4

SAS中数据分组求和,求解答 [推广有奖]

  • 0关注
  • 0粉丝

初中生

57%

还不是VIP/贵宾

-

威望
0
论坛币
18 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
253 点
帖子
7
精华
0
在线时间
11 小时
注册时间
2015-12-13
最后登录
2016-6-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
name kemu  diyici   dierci disanci……
zhao yuwen   65       66
zhao shuxue  99       90
zhao yingyu  87       88
qian huaxue   90       92
qian shuxue  99       98
qian yingyu  87       66
sun  yuwen   77       80
sun  shuxue  88       90
sun  yingyu  87       88
sun  shengwu 66       77

变成下面的
name diyici dierci disanci ……
zhao  251     244
qian  276     256
sun   318     335
每个人无论学了多少科目,考了多少次试,都按姓名对每次考试求和

二维码

扫码加我 拉你入群

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

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

关键词:数据分组 求解答 yingyu shuxue diyici huaxue yingyu

沙发
孤单的我们 发表于 2015-12-25 10:46:46 |只看作者 |坛友微信交流群
proc sql;
    select distinct name,sum(diyici) as diyici,sum(dierci) as dierci from have group by name;
quit;
已有 4 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
李会超 + 60 精彩帖子
admin_kefu + 15 热心帮助其他会员
latin小小刺猬 + 1 + 1 + 1 精彩帖子
Tigflanker + 3 + 2 + 1 分析的有道理

总评分: 经验 + 60  论坛币 + 15  学术水平 + 4  热心指数 + 3  信用等级 + 2   查看全部评分

使用道具

藤椅
xiaoyu163 发表于 2015-12-30 00:19:29 |只看作者 |坛友微信交流群
proc means data=test nway;
class name;
var diyici dierci;
output out=test_sum(drop=_type_ _freq_) sum= / autoname;
run;

proc print data=test_sum;
run;

其中test是原始数据, test_sum是求和以后的数据。若是想要在生成的数据中加上每一次考试所有人的分数的总和,去掉nway即可。 另外若是想要除了求和外还要求每个人每次考试的最低分、最高分及平均分,在sum=后面加上min= max= mean=就可以了, 因为使用了autoname, 每一个变量都会自动存为与原变量名对应的名字。
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
latin小小刺猬 + 1 + 1 + 1 分析的有道理
admin_kefu + 30 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

板凳
舍身卫道 发表于 2016-1-4 17:44:59 |只看作者 |坛友微信交流群
%macro test();
proc summary data=原始数据集 mway missing;
class name;
var
%do i=1 %to &sum.;
di_&i._ci          /*变量名 具体自己定义*/
%end;;
output out=输出数据集(drop=_type_) sum=;
run;
%mend;
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 20 热心帮助其他会员
latin小小刺猬 + 1 + 1 + 1 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

报纸
nniebo 发表于 2016-2-25 18:55:00 |只看作者 |坛友微信交流群
/*Create original dataset*/

data score;
input name$ course$ first second  @@;
cards;
zhao yuwen   65 66
zhao shuxue  99 90
zhao yingyu  87 88
qian huaxue  90 92
qian shuxue  99 98
qian yingyu  87 66
sun  yuwen   77 80
sun  shuxue  88 90
sun  yingyu  87 88
sun  shengwu 66 77
;
run;


/*METHOD 1: Calculate total score use FIRST. LAST.*/
proc sort data=score;
        by name;
run;

data sum_score;
        set score;
        by name;
        if first.name then do;
                sum1=0;
                sum2=0;
        end;
        sum1+first;
        sum2+second;
        if last.name;
        drop course;
run;

/*METHOD2: Calculate total score by PROC MEANS step*/
proc means data=score sum;
        var first second;
        class name;
        output out=sum_score2 sum(first second)=sum1 sum2;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

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

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

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

GMT+8, 2024-4-25 23:11