请选择 进入手机版 | 继续访问电脑版
楼主: 乾坤神龙
5783 11

[原创博文] 关于有format的数据集导出 [推广有奖]

  • 8关注
  • 1粉丝

硕士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
4 点
热心指数
9 点
信用等级
5 点
经验
2341 点
帖子
78
精华
0
在线时间
196 小时
注册时间
2010-6-2
最后登录
2023-9-6

乾坤神龙 发表于 2012-5-22 15:42:10 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
proc format;
value groupf 1 = '研究药物' 2 = '对照药物';
value sexf 1 = '男' 2 = '女';
run;
data a;
format group groupf. sex sexf.;
label group = '组别' age = '年龄' sex = '性别';
do subid = 1 to 10;
   group = mod(subid, 2) + 1;
   age = 18 + int(ranuni(0) * 42);
   sex = ceil(ranuni(0) * 2);
   output;
end;
run;
大体数据集类似这个样子,只是真正的数据集更多的变量是拥有format的,现在想要将数据集导出为excel,但是一般导出的时候,group和sexf会导出为1和2,想要将format之后的结果导出,就是导出为“男”“女”的结果;因为有很多变量,不能单个处理,所以想问一下有没有什么好的方法能够解决!!谢谢!!
二维码

扫码加我 拉你入群

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

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

关键词:format FORMA form RMA Mat excel

回帖推荐

乾坤神龙 发表于4楼  查看完整内容

这位老大,这是我后来找的一个宏,对这个数据集可以解决。但是不知道怎么回事,我使用别的数据集,就是不能很好地输出,到了一定阶段就停下来了,建议各位也使用一下自己其他的数据集验证一下。如果您对这个了解的比较深刻的话,麻烦给出一点讲解,谢谢了!!!
已有 1 人评分热心指数 信用等级 收起 理由
eijuhz + 2 + 1 鼓励积极发帖讨论

总评分: 热心指数 + 2  信用等级 + 1   查看全部评分

本帖被以下文库推荐

webgu 发表于 2012-5-22 17:02:38 |显示全部楼层 |坛友微信交流群
  1. ods html file="d:\b.xls";
  2. title ;
  3. proc print  data=a label ;
  4. run;
  5. ods html close;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

webgu 发表于 2012-5-22 17:11:13 |显示全部楼层 |坛友微信交流群
样子是不太好看,可以加 ODS  style 选项,但是没有多大改观。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

乾坤神龙 发表于 2012-5-23 09:52:24 |显示全部楼层 |坛友微信交流群
webgu 发表于 2012-5-22 17:11
样子是不太好看,可以加 ODS  style 选项,但是没有多大改观。
  1. %macro exportxls(data);
  2. proc contents data = &data out = e noprint; run;
  3. proc sql noprint; select count(*) into :nobs from e; quit;
  4. data e1; set e;
  5.    if missing(label) then label = 'miss';
  6.    if missing(format) then format = 'miss';
  7.    else format = compress(format) || '.';
  8.    keep name label format varnum;
  9. run;
  10. data _null_; set e1;
  11.    call symput(compress("name" || varnum), left(trim(compbl(name))));
  12.    call symput(compress("label" || varnum), left(trim(compbl(label))));
  13.    call symput(compress("format" || varnum), left(trim(compbl(format))));
  14. run;
  15. data e2;
  16.    format %do i = 1 %to &nobs; c_&&name&i %end; $200.;
  17.    %do i = 1 %to &nobs; c_&&name&i = "&&name&i"; %end;
  18. run;
  19. data e3;
  20.    format %do i = 1 %to &nobs; c_&&name&i %end; $200.;
  21.    %do i = 1 %to &nobs;
  22. %if &&label&i ne miss %then %do; c_&&name&i = "&&label&i"; %end;
  23. %else %do; c_&&name&i = ' '; %end;
  24.    %end;
  25. run;
  26. data e4; set &data;
  27.    format %do i = 1 %to &nobs; c_&&name&i %end; $200.;
  28.    %do i = 1 %to &nobs; %if &&format&i ne miss %then %do; c_&&name&i = put(&&name&i, &&format&i); %end;
  29.    %else %do; c_&&name&i = left(&&name&i); %end; %end;
  30.    drop %do i = 1 %to &nobs; &&name&i %end;;
  31. run;
  32. data e5; set e2 e3 e4; run;
  33. proc export data = e5 outfile = "F:\WORKING\temp\a.xls" dbms = excel2000 replace; run;
  34. %mend exportxls;
  35. %exportxls(a);
复制代码
这位老大,这是我后来找的一个宏,对这个数据集可以解决。但是不知道怎么回事,我使用别的数据集,就是不能很好地输出,到了一定阶段就停下来了,建议各位也使用一下自己其他的数据集验证一下。如果您对这个了解的比较深刻的话,麻烦给出一点讲解,谢谢了!!!
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
webgu + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 3  论坛币 + 3  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

didizhang 发表于 2013-1-22 17:08:12 |显示全部楼层 |坛友微信交流群
PROC EXPORT DATA=XXX  DBMS=CSV OUTFILE="X:\XX.CSV";RUN;

使用道具

webgu 发表于 2013-1-23 00:33:13 |显示全部楼层 |坛友微信交流群
乾坤神龙 发表于 2012-5-23 09:52
这位老大,这是我后来找的一个宏,对这个数据集可以解决。但是不知道怎么回事,我使用别的数据集,就是不 ...
程序没有问题。可以增加导路经以及DBMS作些小修改,以增加程序的通用性。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

webgu 发表于 2013-1-23 00:33:15 |显示全部楼层 |坛友微信交流群
乾坤神龙 发表于 2012-5-23 09:52
这位老大,这是我后来找的一个宏,对这个数据集可以解决。但是不知道怎么回事,我使用别的数据集,就是不 ...
程序没有问题。可以增加导路经以及DBMS作些小修改,以增加程序的通用性。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

乾坤神龙 发表于 2013-1-23 09:15:49 |显示全部楼层 |坛友微信交流群
didizhang 发表于 2013-1-22 17:08
PROC EXPORT DATA=XXX  DBMS=CSV OUTFILE="X:\XX.CSV";RUN;
我试了一下 出现的文字全是乱码

使用道具

didizhang 发表于 2013-1-25 11:20:10 |显示全部楼层 |坛友微信交流群
乾坤神龙 发表于 2013-1-23 09:15
我试了一下 出现的文字全是乱码
那就奇怪了,我一直用这种方法输出数据,导出的是FORMAT,而非实际的value。

使用道具

chenys625 发表于 2013-1-26 20:47:07 |显示全部楼层 |坛友微信交流群
didizhang 发表于 2013-1-25 11:20
那就奇怪了,我一直用这种方法输出数据,导出的是FORMAT,而非实际的value。
是的。我记得导出的也是format的内容,计算是按原始值。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 17:37