全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1162 5
2014-03-18
已知一份数据Z:
data z;
        input x $40.;
        cards;
a,M,123
b,,234
;
run;
里面一共含3个数据,URS,GENDER,VALUE。我需要用函数把三个值取出来,请问如何操作。
第二行的GENDER为空值,有两个连续逗号。



普通的方式会错位。
错误代码:
data z1;
        set z;
        user=scan(x,1,',');
        gender=scan(x,2,',');
        value=scan(x,3,',');
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2014-3-18 16:48:39
data z1;
        set z;
                x=tranwrd(x,',,',' , ,');
        user=scan(x,1,',');
        gender=scan(x,2,',');
        value=scan(x,3,',');
run;
二维码

扫码加我 拉你入群

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

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

2014-3-18 19:15:10
有没有其它办法的?,实际工作中有多个连续逗号的情况,又不能重新用DSD导入了。
二维码

扫码加我 拉你入群

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

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

2014-3-18 19:34:22
    x=tranwrd(x,',','  ,');
二维码

扫码加我 拉你入群

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

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

2014-3-20 09:55:44
wwang111 发表于 2014-3-18 16:48
data z1;
        set z;
                x=tranwrd(x,',,',' , ,');
That is not a good solution. Use dsd option is the correct way.

data z;
length charvar $2 gender $1 numvar 8;
infile cards dsd;

        input charvar  gender  numvar;
        cards;
a,M,123
b,,234
;

proc print;run;
二维码

扫码加我 拉你入群

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

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

2014-3-20 10:15:12
bobguy 发表于 2014-3-20 09:55
That is not a good solution. Use dsd option is the correct way.

data z;
实际情况是数据已经导进去了的数据处理。

不是原始数据。原始数据太乱。需要根据关键字取出这个字符串再进行处理。所以不能用DSD
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群