楼主: fyp198744
1667 5

输出的问题!output! [推广有奖]

  • 0关注
  • 1粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5181 点
帖子
257
精华
0
在线时间
258 小时
注册时间
2016-5-23
最后登录
2019-9-30

楼主
fyp198744 发表于 2016-10-8 10:35:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
原始数据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;

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

扫码加我 拉你入群

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

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

关键词:output outpu Out put Origin origin

沙发
蓝_23 发表于 2016-10-8 14:45:31
  1. data origin;
  2. ***ps:the type of variables, please add $ after character varible;
  3. input id  para $ value;
  4. cards;
  5. 1 a 12
  6. 2 b 35
  7. 3 c 21
  8. 4 d 5
  9. 5 d 14
  10. 6 c 5
  11. 7 b 6
  12. 8 d 1
  13. 9 a 8
  14. 10 c 1
  15. 11 d 35
  16. 12 b 9
  17. ;
  18. run;

  19. ***keep the variables you need;
  20. data a(keep=id value value_a) b(keep=id value value_b)
  21.         c(keep=id value value_c) d(keep=id value value_d);
  22.     set origin;
  23.     if para="a" then do;value_a=value;output a;end;
  24.     if para="b" then do;value_b=value;output b;end;
  25.     if para="c" then do;value_c=value;output c;end;
  26.     if para="d" then do;value_d=value;output d;end;
  27. run;
复制代码

藤椅
wwang111 发表于 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;

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

报纸
蓝_23 发表于 2016-10-9 13:18:36
  1. proc sql noprint;
  2.      select count(distinct para) into : n from origin;
  3.      select distinct para into : pa1 - : pa%left(&n) from origin ;
  4. quit;

  5. %let n=&n;
  6. %put &pa1 &pa2;

  7. %macro repeat();
  8. %do i= 1 %to &n;
  9. data &&pa&i;
  10.     set origin;
  11.     where para="&&pa&i" ;
  12.     rename value=value_&&pa&i;
  13. run;
  14. %end;
  15. %mend;

  16. %repeat();
复制代码

地板
wwang111 发表于 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;

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

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