楼主: phoesun
30204 8

[实际应用] data步的转置 和proc transpose转置的灵活运用 [推广有奖]

  • 1关注
  • 0粉丝

大专生

86%

还不是VIP/贵宾

-

威望
0
论坛币
51 个
通用积分
0
学术水平
0 点
热心指数
5 点
信用等级
0 点
经验
1160 点
帖子
37
精华
0
在线时间
79 小时
注册时间
2013-4-12
最后登录
2016-6-30

楼主
phoesun 发表于 2014-8-24 12:38:23 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
         在实际应用当中,我们需要对数据进行转置,把横向的数据想变成纵向的,把纵向的数据想变成横向的,但是当数据量过大时,我们使用proc transpose 速度就会很慢,很多朋友可能会灵活使用proc transpose  但是data步的转置用的不熟悉,在下不才,举个简单的例子帮助大家了解data步的转置;
     在此我就不过多介绍proc transpose的具体使用方法,只是在此简单的举个实例,让大家了解这两种实现数据转置的方法即可,希望各位大牛们批评指正,能够做些补充。



/*此数据集为学生各科考试的成绩记录,希望一个学生姓名后面几列跟的是学生的各个科目的成绩*/
data quan1;
input  name$ course $ score;
cards;
zhangsan a 59
zhangsan b 86
zhangsan c 75
zhangsan d 76
lisi a 78
lisi c 85
lisi e 79
run;

/*先对原始数据集进行排序*/
proc sort data=quan1;
by name;
run;
/*1、transpose转置实现 把纵向数据集按照需要 转换成横向数据集*/
proc transpose data=quan1   out=tt(drop=_name_);
by name;
id course;
var score;
run;


/*data步转置实现 :把纵向数据集按照需要 转换成横向数据集*/
data temp;
set quan1;
array amount(5)  a  b  c  d  e;
retain  a  b  c  d  e;
by name;
if first.name then
  do i=1 to 5;
   amount(i)=0;
  end;
      if course="a" then
  amount(1)=score;
else if course="b" then
  amount(2)=score;
else if course="c" then
  amount(3)=score;
else if course="d" then
  amount(4)=score;
else if course="e" then
  amount(5)=score;
if last.name;
drop i score course;
run;

/*2、transpose步转置实现 把横向数据集按照需要 转换成纵向数据集*/
proc transpose data=temp  out=dsd(rename=(_name_=course col1=score) );
by name;
run;


/*data步转置实现 把横向数据集按照需要 转换成纵向数据集*/
data temp1;
set temp;
array aa(5)  a  b  c  d  e;
retain  a  b  c  d  e;
by name;
do i=1 to 5;
if aa(i) ne 0 and aa(i) ne . then do;
if i=1 then course="a";
else if i=2 then course="b";
else if i=3 then course="c";
else if i=4 then course="d";
else if i=5 then course="e";
score=aa(i);
output;
end;
end;
drop i  a  b  c  d  e;
run;

这样横向纵向转置就可以初步实现,如果还想做些其他细节的修改,需要再添加一些选项即可
二维码

扫码加我 拉你入群

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

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

关键词:Transpose data步 Trans pose Data 实际应用 朋友 记录 姓名

已有 1 人评分热心指数 收起 理由
tmdxyz + 5 热心帮助其他会员

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

沙发
tmdxyz 发表于 2014-8-25 02:06:58
学习了,谢谢!

藤椅
phoesun 发表于 2014-8-25 23:19:30
tmdxyz 发表于 2014-8-25 02:06
学习了,谢谢!
谢谢,共同进步

板凳
zorro999 发表于 2016-2-2 09:49:53
简单易用,非常好,学习了!

报纸
Muriz 发表于 2018-3-29 20:14:03
好全面,谢谢!

地板
yancongthu 学生认证  发表于 2019-3-1 10:58:13
学到了http://www.cnblogs.com/immaculate/p/6166233.html

————————————
附件别管,错了

451551408892_.pic.jpg (73.63 KB)

451551408892_.pic.jpg

7
17766081521 发表于 2019-10-18 15:54:10
写homework正好发愁如何用data步转置,按照大神的指点顺利转置成功啦~~~非常感谢[victory][victory]

8
xieguahu 发表于 2019-10-22 00:31:35
谢谢分享.

9
依日竹 发表于 2024-10-9 11:12:30
stata中怎么没有这么方便的命令

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-4 06:16