楼主: 5傻小不点
3778 10

怎样把字符串中的空格移到前面,使字符串右对齐 [推广有奖]

  • 0关注
  • 0粉丝

本科生

90%

还不是VIP/贵宾

-

威望
0
论坛币
104 个
通用积分
0.0039
学术水平
6 点
热心指数
6 点
信用等级
6 点
经验
3727 点
帖子
92
精华
0
在线时间
118 小时
注册时间
2015-5-29
最后登录
2019-12-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
给出一列数a1,要得到的变量a2是将这列数和它所占的百分比连在一起,且a2中原来数的部分和百分比的部分都要靠右对齐:
a1           a2
50      50  (50%)
19      19  (19%)
14      14  (14%)
12      12  (12%)
  4        4    (4%)
  1        1    (1%)
也就是a2中的0,9,4,2,4,1对齐,所有)都要对齐。

提供可操作代码如下:
  1. data a;
  2. input a1 @@;
  3. cards;
  4. 50 19 14 12 4 1
  5. ;
  6. run;
  7. proc sql;
  8. select sum(a1) into :n from a;
  9. quit;
复制代码
没对齐的参考程序如下:
  1. data b;
复制代码



二维码

扫码加我 拉你入群

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

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

关键词:字符串 proc sql Select Elect Input SAS

回帖推荐

沙发
孤单的我们 发表于 2016-4-19 17:25:56 |只看作者 |坛友微信交流群
根据length来补空格吧

使用道具

藤椅
guanglei 发表于 2016-4-19 18:14:51 |只看作者 |坛友微信交流群
先把a1转化成规定长度的字符型,然后在合并就行啦

  1. data a;input a1 @@;cards;50 19 14 12 4 1;run;
  2. data b(keep=a1 a2);        set a;        b = put(a1,2.);        a2 = b||"("||b||"%)";run;
复制代码


三人行,必有我师焉;择其善者而从之,其不善者而改之

使用道具

板凳
5傻小不点 发表于 2016-4-19 18:39:33 |只看作者 |坛友微信交流群
guanglei 发表于 2016-4-19 18:14
先把a1转化成规定长度的字符型,然后在合并就行啦
左边括号也要贴着数字

使用道具

报纸
5傻小不点 发表于 2016-4-19 18:45:58 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-4-19 17:25
根据length来补空格吧
怎么在左边补空格~我还是不会!

使用道具

地板
5傻小不点 发表于 2016-4-19 18:58:38 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-4-19 17:25
根据length来补空格吧
只能想到这样:
  1. data b;
  2. set a;
  3. a3=put(round(100*a1/&n,1),5.)||'%)';
  4. substr(a3,anyalnum(a3)-1,1)='(';
  5. a2=put(a1,3.)||a3;
  6. drop a3;
  7. run;
复制代码

使用道具

7
孤单的我们 发表于 2016-4-20 09:29:17 |只看作者 |坛友微信交流群
5傻小不点 发表于 2016-4-19 18:58
只能想到这样:
data b;
set a;
a2=put(a1,2.)||" ("||put(round(100*a1/&n,.1),4.1)||"%)";
run;

使用道具

8
5傻小不点 发表于 2016-4-20 10:14:01 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-4-20 09:29
data b;
set a;
a2=put(a1,2.)||" ("||put(round(100*a1/&n,.1),4.1)||"%)";
左边括号有的没贴着数字额(⊙o⊙)…左边的括号不用对齐,只要贴着数字就可以了

使用道具

9
孤单的我们 发表于 2016-4-20 10:20:11 |只看作者 |坛友微信交流群
5傻小不点 发表于 2016-4-20 10:14
左边括号有的没贴着数字额(⊙o⊙)…左边的括号不用对齐,只要贴着数字就可以了
  1. data b;
  2. set a;
  3. a2="("||strip(put(round(100*a1/&n,.1),4.1))||"%)";
  4. if length(a2)=7 then a3=put(a1,2.)||" "||a2;
  5. else if length(a2)=6 then a3=put(a1,2.)||"  "||a2;
  6. else if length(a2)=5 then a3=put(a1,2.)||"   "||a2;
  7. run;
复制代码

使用道具

10
5傻小不点 发表于 2016-4-20 10:43:19 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-4-20 10:20
谢谢~                  

使用道具

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

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

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

GMT+8, 2024-4-27 20:10