楼主: lachance
6096 10

[问答] SAS 数据分组后 计算 ,结果再保存在不同的DATASET中 [推广有奖]

  • 1关注
  • 3粉丝

已卖:3份资源

讲师

44%

还不是VIP/贵宾

-

威望
0
论坛币
693 个
通用积分
0.0157
学术水平
4 点
热心指数
5 点
信用等级
1 点
经验
10072 点
帖子
403
精华
0
在线时间
399 小时
注册时间
2008-1-22
最后登录
2020-4-15

楼主
lachance 发表于 2011-2-9 01:03:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
DATASET简化如下,
ID                                                                      X
14
12
1 3
23
2 4
2 5
24


我想根据ID=1 or 2 来计算每个SUBSAMPLE 的平均数X,
也就是说ID=1, average(X)= 3
ID=2的subsample, average(X)= 4;

然后将每个计算结果保存在另外一个DATASET中,
ID  average
1   3
ID AVERAGE
2  4

因为DATASET 有1000个ID,还没有想出比较好的方法来解决,希望大家帮忙。
二维码

扫码加我 拉你入群

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

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

关键词:dataset DataS 数据分组 Data TAS 数据 结果 SAS 分组 dataset

回帖推荐

junuylia 发表于3楼  查看完整内容

如果不用Macro,可以用proc report

本帖被以下文库推荐

[

沙发
baoaibaobao 发表于 2011-2-9 08:13:05
  1. data zachary;
  2. input id x;
  3. cards;
  4. 1        4
  5. 1        2
  6. 1        3
  7. 2        3
  8. 2        4
  9. 2        5
  10. 2        4
  11. 3   5
  12. 3   8
  13. ;
  14. %macro zachary(n);
  15.         %do i=1 %to &n;
  16.                 proc sql noprint;
  17.                         create table set&i as
  18.                         select id,mean(x) as mean_x
  19.                         from zachary
  20.                         where id=&i
  21.                         group by id;
  22.                 quit;
  23.         %end;
  24. %mend;
  25. %zachary(3);
复制代码
已有 1 人评分经验 热心指数 收起 理由
crackman + 20 + 1 鼓励积极发帖讨论

总评分: 经验 + 20  热心指数 + 1   查看全部评分

藤椅
junuylia 发表于 2011-2-9 09:48:28
如果不用Macro,可以用proc report
  1. data test;
  2. input id x;
  3. cards;
  4. 1  4
  5. 1  2
  6. 1  3
  7. 2   3
  8. 2   4
  9. 2  5
  10. 2  4
  11. 3   5
  12. 3   8
  13. ;

  14. proc report data=test out=outTest;
  15. column id x;
  16. define id/group;
  17. define x/ mean 'average';
  18. run;

  19. proc print data=outTest;
  20. run;
复制代码
已有 1 人评分经验 热心指数 收起 理由
crackman + 20 + 1 鼓励积极发帖讨论

总评分: 经验 + 20  热心指数 + 1   查看全部评分

板凳
lachance 发表于 2011-2-10 01:55:47
baoaibaobao 发表于 2011-2-9 08:13
  1. data zachary;
  2. input id x;
  3. cards;
  4. 1        4
  5. 1        2
  6. 1        3
  7. 2        3
  8. 2        4
  9. 2        5
  10. 2        4
  11. 3   5
  12. 3   8
  13. ;
  14. %macro zachary(n);
  15.         %do i=1 %to &n;
  16.                 proc sql noprint;
  17.                         create table set&i as
  18.                         select id,mean(x) as mean_x
  19.                         from zachary
  20.                         where id=&i
  21.                         group by id;
  22.                 quit;
  23.         %end;
  24. %mend;
  25. %zachary(3);
复制代码
非常感谢大家的热心帮助。
我的DATASET中,id=1, 2,..., 1000.
这样的话,做循环后 create table set&i as 就会生成1000个dataset: set 1, set2, ..., set1000.
程序的运行速度大大降低,请问有没有什么办法不显示这些subsample dataset 在work中,并且还可以在后面的LOOP程序中
调用这1000个DATASET 然后做进一步的计算。
[

报纸
hssnow 发表于 2011-2-10 11:31:10
4# lachance
呵呵,你的要求不就是“将每个计算结果保存在另外一个DATASET中”么,要不你就将所有的放在一个data set中,后面再根据 id 进行操作
My Blog: http:/hssnow.name/
宁静致远

地板
lachance 发表于 2011-2-11 22:13:41
5# hssnow

放在一个DATASET中能不能用矩阵来操作呀,我的数据全部放在一个DATASET中也有很多数据呀, 根据 ID 来检索就是没有找到很好的方法呢,
希望给些建议呀。
hssnow 发表于 2011-2-10 11:31
4# lachance
呵呵,你的要求不就是“将每个计算结果保存在另外一个DATASET中”么,要不你就将所有的放在一个data set中,后面再根据 id 进行操作
[

7
hssnow 发表于 2011-2-11 22:52:46
6# lachance
你的意思是用矩阵的方法来做这个问题,把所有数据放在一个data set中? 俺proc iml不咋会啊,见笑了,呵呵~
另外,1000条观测不算多吧
根据实际情况可以考虑建立 index 提高检索速度

俺是小菜鸟,以上仅个人拙见,嘿嘿
已有 1 人评分热心指数 收起 理由
crackman + 1 鼓励积极发帖讨论

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

My Blog: http:/hssnow.name/
宁静致远

8
lachance 发表于 2011-2-12 10:49:52
因为我真正的DATASET 有1000多个ID, 如果按照2楼的高手所说,那我的程序要生成1000多个DATASET,想问问有没有高效的办法来实现?
lachance 发表于 2011-2-9 01:03
DATASET简化如下,
ID                                                                      X
14
12
1 3
23
2 4
2 5
24


我想根据ID=1 or 2 来计算每个SUBSAMPLE 的平均数X,
也就是说ID=1, average(X)= 3
ID=2的subsample, average(X)= 4;

然后将每个计算结果保存在另外一个DATASET中,
ID  average
1   3
ID AVERAGE
2  4

因为DATASET 有1000个ID,还没有想出比较好的方法来解决,希望大家帮忙。
[

9
junuylia 发表于 2011-2-12 11:15:56
看3楼

8# lachance

10
lachance 发表于 2011-2-13 10:27:16
多谢多谢。
[

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 05:27