楼主: wxmouse
3780 7

请教如何用Put语句带引号且无空格输出本文型变量? [推广有奖]

  • 0关注
  • 1粉丝

本科生

93%

还不是VIP/贵宾

-

威望
0
论坛币
416 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1011 点
帖子
54
精华
0
在线时间
130 小时
注册时间
2011-7-20
最后登录
2021-12-7

楼主
wxmouse 发表于 2014-8-14 15:46:05 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
具体需求是这样的,有个SAS数据集,只有一个文本行变量(全是数字),比如:
132132132131
563545253243
321243243242
324324456767
768768898098
;
我想导出成这个格式:'132132132131','563545253243','563545253243','324324456767','768768898098'
我目前用了||字符串连接符来加了逗号作为分隔符,观测之间的空格还是去不掉,去空格我用了笨办法,导出到TXT后用替换功能去掉了空格。
关键引号不知道怎么加?请教各位大侠!

二维码

扫码加我 拉你入群

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

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

关键词:put语句 如何用 put sas数据集 各位大侠 如何

沙发
freerunning_sky 在职认证  发表于 2014-8-14 16:55:56
  1. data input;
  2.         infile datalines truncover;
  3.         input in_var $20.;
  4.         datalines;
  5.         132132132131
  6.         563545253243
  7.         321243243242
  8.         324324456767
  9.         768768898098
  10.         ;
  11. run;

  12. data _null_;
  13.         set input;
  14.         in_var=compress("'"||in_var||"'");
  15.         file "c:/out.txt" dlm=",";
  16.         put in_var @@;
  17. run;
复制代码

藤椅
mingfeng07 学生认证  发表于 2014-8-14 17:17:32
data a;
input id $;
cards;
132132132131
563545253243
321243243242
324324456767
768768898098
;
run;
data _null_(keep=value);
file 'C:\Users\Administrator\Desktop\a.txt' dsd delimiter=' ';
length value $ 100;
retain value;
set a end=last;
   id1="'"||id||"'";
   if _n_=1 then value=id1;
   else value=catx(',',value,id1);
   if last then do;
   put value;
   end;
run;

板凳
wxmouse 发表于 2014-8-14 20:14:41
freerunning_sky 发表于 2014-8-14 16:55
这个可以带引号输出,也去掉了空格,但跟我的需求有点区别,这段代码输出的分隔符逗号在行末换行时就没了,而我也是需要的。不过加引号的方法可以。
有个问题,双引号和单引号有什么区别 啊?

报纸
freerunning_sky 在职认证  发表于 2014-8-15 08:57:15
wxmouse 发表于 2014-8-14 20:14
这个可以带引号输出,也去掉了空格,但跟我的需求有点区别,这段代码输出的分隔符逗号在行末换行时就没 ...
所有值都输出到一行,末尾要“,”作甚。。
单引号、双引号在表示字符的时候没啥区别,但是引用宏变量的时候一定要双引号。
  1. data input;
  2.         infile datalines truncover;
  3.         input in_var $20.;
  4.         datalines;
  5.         132132132131
  6.         563545253243
  7.         321243243242
  8.         324324456767
  9.         768768898098
  10.         ;
  11. run;

  12. data _null_;
  13.         set input end=last;
  14.         in_var=compress("'"||in_var||"'");
  15.         file "c:/out.txt" dlm=",";
  16.         put in_var @@;
  17.                 if last then do;
  18.                         in_var="";
  19.                         put in_var;
  20.                 end;
  21. run;
复制代码

地板
wxmouse 发表于 2014-8-15 09:09:36
freerunning_sky 发表于 2014-8-15 08:57
所有值都输出到一行,末尾要“,”作甚。。
单引号、双引号在表示字符的时候没啥区别,但是引用宏变量的时 ...
谢谢。观测数一多txt就会自动换行好像,这样行末就没逗号,而我是要全选复制后做其他用途的,所以还必须留逗号

7
pobel 在职认证  发表于 2014-8-15 10:22:19
data _null_;
        set input end=last;
                in_var=quote(strip(in_var));
        file "c:\files\out.txt";
        put in_var @@;
                if not last then  put ", " @@;
run;

8
bobguy 发表于 2014-8-16 22:50:17
freerunning_sky 发表于 2014-8-14 16:55
you also can use catq function to quote a string.   

data input;
            infile datalines truncover;
                        file 'c:\temp\tempfile.txt' dlm=',';
            input in_var $20.;
                        in_varQ=compress(catq('1',in_var));
            put in_varQ @@;
            datalines;
            132132132131
            563545253243
            321243243242
            324324456767
            768768898098
            ;
    run;

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

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