全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6391 8
2011-06-09
悬赏 20 个论坛币 已解决
数据集是一个Panel,结构如下:
country   year    vd     qw   qwe    fc     ......      sxb (50个变量)
china     2004     5     322   33      86    ......      322
china     2005     4     22     83      16    ......      75
china     2006     6     352   39      76    ......      32
.
.
.
china     2011     5     652   53      66    ......      82
us
us
us
us.
.
.
.
.
new_zealand
.
.
.
(100个国家)(2004-2011,共8年)     总计100*8=800个观测值

我要做的是:每年,对所有国家的每一个变量按公式换算成0-10的指数(连续的scale)。请大侠帮忙在SAS中实现。。。
比如说,对于2004年,v1变量有100个国家,即100个不同的观测值。将这些值通过公式计算成0-10的指数;同样,2004年v2也有指数。同理,2005-2011年。
这样变换之后仍然是一个panel,公式为:10*(max-obs)/(max-min)

请大侠将SAS代码贴在下面。。。

最佳答案

二维码

扫码加我 拉你入群

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

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

全部回复
2011-6-9 14:45:25
复制代码
二维码

扫码加我 拉你入群

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

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

2011-6-9 18:12:38
诸位大侠,揭榜啊~~~~~
二维码

扫码加我 拉你入群

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

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

2011-6-10 00:33:27
一定要用宏?我觉得转个置就行了啊
下面是程序
data test;
infile 'E:\abc.txt';
input country $ year vd qw qwe fc ...... sxb
run;
proc sort data=test out=test1;
by year;
run;
proc transpose data=test1 out=test2;
by year;
id country;
run;
data test3;
set test2;
array raw(100) china us ...... new_zealand......;
maxz=max(china,us......new_zealand.......);
minz=min(china,us......new_zealand......);
do i=1 to 100
  raw(i)=10*(maxz-raw(i))/(maxz-minz);
end;
run;
proc Transpose data=test3 out=test4;
by         year;
id         _name_;
run;
二维码

扫码加我 拉你入群

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

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

2011-6-10 00:37:44
啊,上面的程序少个冒号。另外国家里面应该有字符长于8个的的吧,所以还得加个length声明,我不知道你的国家最长是多少,暂时定个50吧,不够你自己改
data test;
infile 'E:\abc.txt';
length country $ 50;
input country $ year vd qw qwe fc ...... sxb;
run;
proc sort data=test out=test1;
by year;
run;
proc transpose data=test1 out=test2;
by year;
id country;
run;
data test3;
set test2;
array raw(100) china us ...... new_zealand......;
maxz=max(china,us......new_zealand.......);
minz=min(china,us......new_zealand......);
do i=1 to 100
  raw(i)=10*(maxz-raw(i))/(maxz-minz);
end;
run;
proc Transpose data=test3 out=test4;
by         year;
id         _name_;
run;
二维码

扫码加我 拉你入群

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

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

2011-6-10 14:01:26
非常感谢二位!数据集太大的时候转置可能会比较麻烦,因此还是用宏比较稳妥。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群