楼主: jpingl1273
2845 11

[原创博文] 求教sas程序! [推广有奖]

  • 1关注
  • 2粉丝

已卖:395份资源

副教授

77%

还不是VIP/贵宾

-

威望
0
论坛币
3016 个
通用积分
12.0407
学术水平
6 点
热心指数
12 点
信用等级
7 点
经验
1439 点
帖子
634
精华
0
在线时间
1294 小时
注册时间
2008-9-5
最后登录
2024-10-15

楼主
jpingl1273 发表于 2010-10-11 18:57:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data source;
input province $ value @@;
cards;
全国 4140.36 北京 9439.63 天津 7010.06 河北 4293.43 山西 3665.66 内蒙古 3953.10 辽宁 4773.43 吉林 4191.34
黑龙江 4132.29 上海 10144.62 江苏 6561.01 浙江 8265.15 安徽 3556.27 福建 5467.08 江西 4044.70 山东 4985.34
河南 3851.60 湖北 3997.48 湖南 3904.20 广东 5624.04 广西 3224.05 海南 3791.37 重庆 3509.29 四川 3546.69
贵州 2373.99 云南 2634.09 西藏 2788.20 陕西 2644.69 甘肃 2328.92 青海 2683.78 宁夏 3180.84 新疆 3182.97
;
run;
试建立两个数据集,用IF-THEN,OUTPUT以及DO语句分别输出高于和低于我国内地农村居民家庭平均每人纯收入的省份,并对其进行计数。
二维码

扫码加我 拉你入群

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

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

关键词:sas程序 province Source output outpu 内蒙古 黑龙江 source 江西 西藏

回帖推荐

myzhang1982 发表于10楼  查看完整内容

proc summary data=source(where=(province ne '全国')); var value; output out=mean mean=vmean; run; data mean; set mean; call symput ('vmean',vmean); run; %put &vmean; data up(drop=downno upno) down(drop=downno upno); set source(where=(province ne '全国')); if value lt &vmean then do; downno+1; n=downno; output down; end; else if valu ...

本帖被以下文库推荐

沙发
llj850809 发表于 2010-10-11 20:26:10
不知道能否帮到你  其实不是很理解你要表达的意思

proc summary data=source;
  var value;
output out=pay mean= n=f_value;
run;

data up down;
  set source;
  if value>4434.0521875  then output up;
  if value<=4434.0521875 then output down;
run;

藤椅
jpingl1273 发表于 2010-10-12 15:40:56
谢谢你的回复,
proc summary data=source;
  var value;
output out=pay mean= n=f_value;
run;
data up down;
  set source;
  if value>4434.0521875 then output up;
  if value<=4434.0521875 then output down;
run;
在您的程序中,我觉得4434.0521875这个均数能用什么代表,把程序写的紧凑点,另外呢,就是用if then output语句但是还要用到do语句,还有就是您的程序中没有每个数据集中的数目,就是比如大于均数的有多少省份,但是在数据集中没有出现!呵呵  谢谢您

板凳
liudeng2005 发表于 2010-10-12 16:37:00
use the combining summary stastics with detail data techinque,note:if _n_= 1 can be used;
我就是我@!

报纸
jpingl1273 发表于 2010-10-12 19:20:10
谢谢回复,可否讲述的详细一些呢,谢谢哈
比如?

地板
hopewell 发表于 2010-10-12 20:54:37
  1. data up down;
  2.     set source;
  3.     array temp{3} _temporary_;
  4.     if _n_=1 then temp(1)=value;
  5.     else if value lt temp(1) then do;
  6.         temp(2)+1;
  7.         no=temp(2);
  8.         output down;
  9.     end;
  10.     else if value ge temp(1) then do;
  11.         temp(3)+1;
  12.         no=temp(3);
  13.         output up;
  14.     end;
  15. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
crackman + 20 + 1 + 1 好,给你钱

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

观钓颇逾垂钓趣 种花何问看花谁

7
jpingl1273 发表于 2010-10-12 21:27:50
果然是高手  谢谢哈  
            学习中ing

8
jpingl1273 发表于 2010-10-13 11:05:02
如果要是那个数据集中要是没有全国的那个指标的话,求出所有的省份的平均值,然后再把各省份的value值根据相对于平均值的大小分组的话,那怎么分呢?

9
hopewell 发表于 2010-10-13 11:35:31
  1. data up down;
  2.     if _n_=1 then
  3.         do until(last);
  4.             set source end=last nobs=n;
  5.             array temp{0:2} _temporary_;
  6.             temp(0)=sum(temp(0),value);
  7.             if last then do;
  8.                 temp(0)=temp(0)/n;
  9.                 put '*** MEAM= ' temp(0) ' ***';
  10.             end;
  11.         end;
  12.     set source;
  13.     if value lt temp(0) then do;
  14.         temp(1)+1;
  15.         no=temp(1);
  16.         output down;
  17.     end;
  18.     else if value ge temp(0) then do;
  19.         temp(2)+1;
  20.         no=temp(2);
  21.         output up;
  22.     end;
  23. run;
复制代码
观钓颇逾垂钓趣 种花何问看花谁

10
myzhang1982 在职认证  发表于 2010-10-13 11:48:01
proc summary data=source(where=(province ne '全国'));
         var value;
         output out=mean mean=vmean;
run;
data mean;
         set mean;
         call symput ('vmean',vmean);
run;
%put &vmean;

data up(drop=downno upno) down(drop=downno upno);
    set source(where=(province ne '全国'));
    if value lt &vmean then do;
        downno+1;
        n=downno;
        output down;
    end;
    else if value ge &vmean then do;
        upno+1;
        n=upno;
        output up;
    end;
run;

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

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