g********3 发帖数: 123 | 1 偶有个问题:
原来的data是:
A B C D
100 07 1000 40
100 07 1000 40
100 07 1001 30
100 06 1000 10
100 06 1001 0
101 06 1000 20
101 06 1003 70
101 07 1000 0
101 07 1003 0
要变成:
A C D07 D06
100 1000 40 10
100 1001 30 0
101 1000 0 20
101 1003 0 70
请问应该如何转?
谢谢! |
l*********s 发帖数: 5409 | 2 don't do this in SAS, it is not trivial. |
c******n 发帖数: 380 | 3 感觉只用transpose够呛,id values只能出现一次,就算是在同一个by group里也有重
复的,估计得连A一起transpose,然后在data step里再output |
g********d 发帖数: 2022 | 4 data one;
input A B $ C D;
cards;
100 07 1000 40
100 07 1000 40
100 07 1001 30
100 06 1000 10
100 06 1001 0
101 06 1000 20
101 06 1003 70
101 07 1000 0
101 07 1003 0
;
run;
proc sort out=two;by A C B D; run;
data three;
set two;
by A C B D;
if first.D then output;
run;
proc transpose out=fin prefix=D;
by A C;
ID B;
var D;
run;
【在 g********3 的大作中提到】 : 偶有个问题: : 原来的data是: : A B C D : 100 07 1000 40 : 100 07 1000 40 : 100 07 1001 30 : 100 06 1000 10 : 100 06 1001 0 : 101 06 1000 20 : 101 06 1003 70
|
b******e 发帖数: 539 | 5 把楼上的程序稍微改了一下:
proc sort data=aaa out=bbb nodupkey; by A C B D; run;
proc transpose data=bbb out=fin prefix=D;
by A C;
ID B;
var D;
run; |
g********d 发帖数: 2022 | 6 nice,3Q
【在 b******e 的大作中提到】 : 把楼上的程序稍微改了一下: : proc sort data=aaa out=bbb nodupkey; by A C B D; run; : proc transpose data=bbb out=fin prefix=D; : by A C; : ID B; : var D; : run;
|
S******y 发帖数: 1123 | 7 #transpose.py
#Python 2.6
S = '''100 07 1000 40
100 07 1000 40
100 07 1001 30
100 06 1000 10
100 06 1001 0
101 06 1000 20
101 06 1003 70
101 07 1000 0
101 07 1003 0'''
d={}
for line in S.split('\n'):
A, B, C, D = line.split()
keyx = A + ',' + C
if keyx not in d:
d[keyx] = {}
d[keyx][B]= D
print 'A,C,D07,D06' #title row
for k in sorted |