全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1608 5
2016-10-08
原始数据origin=
idparavalue

1

a

12

2

b

35

3

c

21

4

d

5

5

d

14

6

c

5

7

b

6

8

d

1

9

a

8

10

c

1

11

d

35

12

b

9

我希望变成
a=
id

para

value

value_a

1

a

12

12

9

a

8

8

b=
id

para

value

value_b

2

b

35

35

7

b

6

6

12

b

9

9

c=
id

para

value

value_c

3

c

21

21

6

c

5

5

10

c

1

1

d=
id

para

value

value_d

4

d

5

5

5

d

14

14

8

d

1

1

11

d

35

35


结果变成
a=
id

para

value

value_a

value_b

value_c

value_d

1

a

12

12

.

.

.

9

a

8

8

.

.

.

b=
id

para

value

value_a

value_b

value_c

value_d

2

b

35

.

35

.

.

7

b

6

.

6

.

.

12

b

9

.

9

.

.

c=
id

para

value

value_a

value_b

value_c

value_d

3

c

21

.

.

21

.

6

c

5

.

.

5

.

10

c

1

.

.

1

.

d=
id

para

value

value_a

value_b

value_c

value_d

4

d

5

.

.

.

5

5

d

14

.

.

.

14

8

d

1

.

.

.

1

11

d

35

.

.

.

35




我的代码是
data origin;
        input id $ para $ value;
        cards;
1 a 12
2 b 35
3 c 21
4 d 5
5 d 14
6 c 5
7 b 6
8 d 1
9 a 8
10 c 1
11 d 35
12 b 9
;
run;

data a b c d;
        set origin;
        if para="a" then do;value_a=value;output a;end;
        if para="b" then do;value_b=value;output b;end;
        if para="c" then do;value_c=value;output c;end;
        if para="d" then do;value_d=value;output d;end;
run;

究竟哪里出了问题,应该怎么改?
二维码

扫码加我 拉你入群

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

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

全部回复
2016-10-8 14:45:31
复制代码
二维码

扫码加我 拉你入群

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

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

2016-10-8 19:32:59
proc sql;
create table para as
select distinct para from origin;
quit;

data _null_;
set para;
call execute("data "||strip(para)||";set origin;if para="||quote(strip(para))||" then do; value_"||strip(para)||"=value;output "||strip(para)||";end;run;");
run;
二维码

扫码加我 拉你入群

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

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

2016-10-9 09:24:56
wwang111 发表于 2016-10-8 19:32
proc sql;
create table para as
select distinct para from origin;
第二段代码能不能稍微解释一下?
二维码

扫码加我 拉你入群

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

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

2016-10-9 13:18:36
复制代码
二维码

扫码加我 拉你入群

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

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

2016-10-9 16:23:43
call execute的功能,在sas help里面的解释:Resolves the argument, and issues the resolved value for execution at the next step boundary.

可以把程序稍微改一下,看一下aaa数据集里面的code变量的值来体会一下:


proc sql;
create table para as
select distinct para from origin;
quit;

data aaa;
set para;
code="data "||strip(para)||";set origin;if para="||quote(strip(para))||" then do; value_"||strip(para)||"=value;output "||strip(para)||";end;run;";
call execute(code);
run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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