楼主: tanaya
2337 8

两个变量如何联结成一个变量? [推广有奖]

  • 3关注
  • 1粉丝

硕士生

96%

还不是VIP/贵宾

-

威望
0
论坛币
700 个
通用积分
4.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
14057 点
帖子
73
精华
0
在线时间
314 小时
注册时间
2012-3-20
最后登录
2023-11-9

楼主
tanaya 发表于 2013-7-11 22:30:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位大侠:
     用sas整理数据过程中,小弟遇到如下情况:

441802222

0874418022220087

440781221

104407812210010

440703240

10004407032401000
(表1)

这个数据集共有3个变量,第1个变量为字符型,第2个变量为数值型,我希望用一个程序基于变量1和变量2得到变量3(如表1),如果我用以下程序如:data data1;set data1;var3=input(compress(osid||pid),$13.);run;   将得到以下结果:

441802222

087441802222087

440781221

1044078122110

440703240

10004407032401000
(表2)
当然(表2)这个结果不是我想要的,我最终目的是想保证变量3一定有13位数字组成,变量3的头和尾必须是变量1和2,中间不够的数字用0补上(如表1中标红的为补上的0),程序应该怎么写?非常谢谢!



二维码

扫码加我 拉你入群

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

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

关键词:compress Input Press Data 整理数据 如何

沙发
tangliang0905 发表于 2013-7-11 23:47:00
抛砖引玉一把

data test1;
input var1 $9.  var2 ;
cards;
441802222 087
440781221 10
440703240 1000
483298992 8
237887    123456
4555      777
;
run;

data test2;
set test1;

if length(var1)+length(left(var2)) =13 then do;
var3 = input(compress(var1||left(var2)),$13.);
end;
else do;
var3 = input(compress(var1||substr('000000000000000',1,13-length(var1)-length(left(var2)))||left(var2)),$13.);
end;
run;

藤椅
yongyitian 发表于 2013-7-12 00:04:08
  1. data test;
  2. input osid $9. pid ;
  3. var3 = cats(osid, put(pid, z4.));
  4. datalines;
  5. 441802222  087
  6. 440781221 10
  7. 440703240 1000
  8. ; run;
复制代码

板凳
boe 发表于 2013-7-12 00:08:37
不知理解对了没有
var3 = put(compress(osid||put(pid,z4.)), $13.);
Gorgeous girl , I love !

报纸
yongyitian 发表于 2013-7-12 00:26:37
boe 发表于 2013-7-12 00:08
不知理解对了没有
var3 = put(compress(osid||put(pid,z4.)), $13.);
非常正确

data test;
input osid $9. pid ;
var3 = cats(osid, put(pid, z4.));
var4 = put(compress(osid||put(pid,z4.)), $13.);
var5 = osid||put(pid, z4.);
datalines;
441802222  087
440781221 10
440703240 1000
; run;
proc contents data=test; run;

Alphabetic List of Variables and Attributes
        #    Variable    Type    Len
        1    osid        Char      9
        2    pid         Num       8
        3    var3        Char    200
        4    var4        Char     13
        5    var5        Char     13
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
boe + 1 + 1 + 1 学到了很多。

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

地板
tanaya 发表于 2013-7-12 21:38:15
谢谢你的抛砖引玉,我学习了一下你的程序,获益良多@tangliang0905!谢谢你提供多种方法供我学习@yongyitian!谢谢你两次热心帮助,回答的很精准@boe!

7
tanaya 发表于 2013-7-12 21:38:59
tangliang0905 发表于 2013-7-11 23:47
抛砖引玉一把

data test1;
谢谢你的抛砖引玉,我学习了一下你的程序,获益良多!

8
tanaya 发表于 2013-7-12 21:39:34
yongyitian 发表于 2013-7-12 00:04
谢谢你提供多种方法供我学习!

9
tanaya 发表于 2013-7-12 21:40:25
boe 发表于 2013-7-12 00:08
不知理解对了没有
var3 = put(compress(osid||put(pid,z4.)), $13.);
谢谢你两次热心帮助,回答的很精准!

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

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