楼主: zhanwokang1345
1089 9

[有偿编程] 请教一个能批量打标签的宏,不想拧螺丝了 [推广有奖]

  • 1关注
  • 0粉丝

高中生

92%

还不是VIP/贵宾

-

威望
0
论坛币
231 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
322 点
帖子
12
精华
0
在线时间
52 小时
注册时间
2020-1-6
最后登录
2021-9-10

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的工作里有一步给变量打标签的工作非常繁琐,一直在研究用宏自动完成,但是由于是SAS新手,研究了一周也没有弄出来。希望有大神能帮助,如果有用我会给予50-100不等的论坛币作为回报,谢谢。

先简要讲述一下我的工作,由于公司有保密需求,因此只是示范数据。

首先我会拿到一个有变量名和对应标签的excel文档,如下图所示,实际上会有多达几十个的变量和标签,而且变量名没有规律,很多名字也很长很臭,图中只是示范。
GGR1A5E7D_SI5]AEG1EBPXW.png

然后我需要跳到SAS软件手动给如上数据打上标签,代码如下
22EZRLT2{S07_S3RLG]{TT1.png

这就是一个完整的工作流程,实际上我一次需要完成数十张公司给的excel表,而且变量很多且名字很长,实在不想拧螺丝了,希望各位大神救救我!
二维码

扫码加我 拉你入群

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

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

关键词:Excel表 EXCEL sas软件 xcel exce

回帖推荐

xiaopingN 发表于2楼  查看完整内容

先把你的excel 文档 由俩行transpose 成俩列, 然后 import 成 SAS dataset DATALABEL (俩变量,一个叫“ vname", 一个叫”label“)。 这应该简单, 我就不写code了。 %global label_list; proc sql noprint; select catx("=", vname, quote(trim(label))) into :label_lsit separated by " " from DATALABEL; quit; Data want; set has; label &label_lsit; run;
沙发
xiaopingN 发表于 2020-8-5 02:05:29 |只看作者 |坛友微信交流群
先把你的excel 文档 由俩行transpose 成俩列, 然后 import 成 SAS  dataset DATALABEL (俩变量,一个叫“ vname", 一个叫”label“)。 这应该简单, 我就不写code了。

%global label_list;
proc sql noprint;
select catx("=", vname, quote(trim(label)))
  into :label_lsit separated by " "
  from DATALABEL;
quit;

Data want;
set has;
label &label_lsit;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zhanwokang1345 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

xiaopingN 发表于 2020-8-5 02:05
先把你的excel 文档 由俩行transpose 成俩列, 然后 import 成 SAS  dataset DATALABEL (俩变量,一个叫“ ...
非常感谢,已测试确实管用,原来还能用sql的方式创建宏,我得去补充sql宏的知识才能看懂代码,希望有不懂得还能问你!

使用道具

xiaopingN 发表于 2020-8-5 02:05
先把你的excel 文档 由俩行transpose 成俩列, 然后 import 成 SAS  dataset DATALABEL (俩变量,一个叫“ ...
你是不是要自己申请奖励我才能给论坛币,你试下

使用道具

报纸
xiaopingN 发表于 2020-8-5 12:13:50 |只看作者 |坛友微信交流群
zhanwokang1345 发表于 2020-8-5 11:08
你是不是要自己申请奖励我才能给论坛币,你试下
呵呵, 你在我帖子下面评分就可以了。

使用道具

地板
zhanwokang1345 发表于 2020-8-5 23:29:06 来自手机 |只看作者 |坛友微信交流群
还有人能用其他办法解决吗大家一起学习呀

使用道具

7
zhanwokang1345 发表于 2020-8-5 23:55:38 来自手机 |只看作者 |坛友微信交流群
xiaopingN 发表于 2020-8-5 02:05
先把你的excel 文档 由俩行transpose 成俩列, 然后 import 成 SAS  dataset DATALABEL (俩变量,一个叫“ ...
请问代码里的separated by不是把宏变量用分隔符隔开的作用吗,为什么可以特定的给label变量加双引号啊?

使用道具

8
xiaopingN 发表于 2020-8-6 01:09:40 |只看作者 |坛友微信交流群
zhanwokang1345 发表于 2020-8-5 23:55
请问代码里的separated by不是把宏变量用分隔符隔开的作用吗,为什么可以特定的给label变量加双引号啊?
你说的对,separated by是把宏变量用分隔符隔开。 给label加双引号是用quote 实现的。

使用道具

9
zhanwokang1345 发表于 2020-8-6 10:58:08 来自手机 |只看作者 |坛友微信交流群
xiaopingN 发表于 2020-8-6 01:09
你说的对,separated by是把宏变量用分隔符隔开。 给label加双引号是用quote 实现的。
学习了,第一次知道还有quote函数

使用道具

10
luekemia 发表于 2020-8-6 15:59:59 |只看作者 |坛友微信交流群
目测只是需要有标签的目的是为了后续可以再导出Excel用标签做表头。
如果是这样的话,其实就很简单了。
程序最开头写:
options validvarname =any;

data outds; set inds;
keep 姓名 性别 年龄 学号 班级 年级 数学 语文 英语 计算机;
run;

这样后续的程序可以直接用中文的变量名了,直接导出excel也是中文字段名表头。

使用道具

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

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

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

GMT+8, 2024-4-26 11:13