楼主: zhushji
1818 5

[原创博文] 求教sas数据处理问题 [推广有奖]

  • 0关注
  • 2粉丝

已卖:621份资源

博士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
2824 个
通用积分
3.7251
学术水平
1 点
热心指数
4 点
信用等级
0 点
经验
4309 点
帖子
171
精华
0
在线时间
515 小时
注册时间
2008-10-30
最后登录
2025-12-23

楼主
zhushji 发表于 2010-12-1 09:15:51 |AI写论文
5论坛币
求教各位高手:现有一数据集,想利用sas进行处理,举例如下:
ipregion price
123 安徽 23
123 安徽 43
456 北京 56
568 浙江 3
568 浙江 24
需求是:
(1)把具有相同ip和相同region字段值的price自动取平均值,即最终把ip+region变成唯一。
ip region price
123 安徽 (23+43)/2
456 北京 56

等等。。。
(2)记录变成唯一之后,进行转置,即把region的字段值作为列变量,应有如下效果
ip 安徽 北京
123 (23+43)/2
456 56
432
456
谢谢

最佳答案

baoaibaobao 查看完整内容

举个例子,如下:输出数据集: ip 安徽 北京 浙江 123 32.8 . . 456 . 6 . 568 . . 24.6667
关键词:sas数据处理 数据处理问题 数据处理 Region Price 平均值 price 北京 浙江 安徽 数据分析专题 数据处理 数据分析软件 数据分析报告 面板数据分析 excel数据分析 数据分析方法 项目数据分析

本帖被以下文库推荐

沙发
baoaibaobao 发表于 2010-12-1 09:15:52
举个例子,如下:
  1. data start;
  2. input ip region $ price;
  3. cards;
  4. 123 安徽 10
  5. 123 安徽 23
  6. 123 安徽 31
  7. 123 安徽 48
  8. 123 安徽 52
  9. 456 北京 6
  10. 568 浙江 12
  11. 568 浙江 35
  12. 568 浙江 27
  13. ;
  14. proc means data=start mean noprint;
  15. var price;by ip;
  16. output out=means;run;
  17. data means(drop=_type_ _stat_);
  18. set means;where _stat_='MEAN';run;
  19. proc sql;
  20. create table semfin as
  21. select distinct a.ip,a.region,q.price
  22. from start a join means q on a.ip=q.ip;
  23. quit;
  24. proc transpose data=semfin out=final let;
  25. by ip;id ip;IDLABEL region;copy ip;run;
  26. data final(drop=_name_);set final;run;
复制代码
输出数据集:
       ip         安徽       北京        浙江
     123       32.8           .                .
     456         .               6                .
     568         .               .         24.6667

藤椅
wuxi0510 发表于 2010-12-1 09:36:59
你把原表发给我,我可以在数据库中实现此功能。
QQ:1098883771

板凳
zhushji 发表于 2010-12-1 09:50:12
2# wuxi0510 不好意思,我这是保密数据,你能把程序写一下吗?谢谢

报纸
viterbi 发表于 2010-12-1 15:12:27
用SQL select dinstinct后,转置即可,应该不难,自己试下吧

地板
baoaibaobao 发表于 2010-12-1 20:42:10
看了crackman的11篇,有所启发。
  1. proc sql;
  2. create table semfin as
  3. select distinct ip,region,mean(price) as M
  4. from start group by ip;
  5. quit;
  6. proc transpose data=semfin out=final let;
  7. by ip;id ip;IDLABEL region;copy ip;run;
  8. data final(drop=_name_);set final;run;
复制代码
同样的结果!

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

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